home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 2 / Gold Medal Software Volume 2 (Gold Medal) (1994).iso / utils / inter37b.arj / INTERRUP.I < prev    next >
Text File  |  1993-10-03  |  354KB  |  9,754 lines

  1. Interrupt List, part 9 of 10
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
  3. --------*-60---------------------------------
  4. INT 60 - reserved for user interrupt
  5. --------v-60---------------------------------
  6. INT 60 - VIRUS - "Zero Bug" - INSTALLATION CHECK
  7.    The "Zero Bug" virus hooks this vector.  It considers itself installed if
  8.    offset 103h of the handler's segment contains the bytes "ZE"
  9. SeeAlso: INT 32,INT 44"VIRUS",INT 61"SEMTEX"
  10. --------d-60---------------------------------
  11. INT 60 - Adaptec and OMTI controllers - DRIVE 0 DATA
  12. SeeAlso: INT 61"Adaptec",INT 62"Adaptec",INT 63"Adaptec",INT 64"Adaptec"
  13. Notes:    this vector stores the first four bytes of the parameter table for
  14.       hard disk 0
  15.     these vectors are used by the following Adaptec controllers:
  16.         ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
  17.     these vectors are NOT used by the following Adaptec controllers:
  18.         ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
  19. --------b-60---------------------------------
  20. INT 60 - Atari Portfolio - USER INTERFACE FUNCTIONS
  21.    supplies a number of subfunctions which perform such functions as drawing
  22.    boxes and menus, and provide input line editing
  23. SeeAlso: INT 61"Atari"
  24. --------V-60---------------------------------
  25. INT 60 - Nabbit v2.0 - (NOT A VECTOR!) - INSTALLATION CHECK
  26. Program: Nabbit is a shareware resident screen data grabber by RSE Inc.
  27. Note:    Nabbit searches INT 60 through INT 66 for a vector which points at
  28.       its ASCIZ signature string "iG" (69h 47h 00h), and uses the first
  29.       free vector in that range it is it not already installed
  30. --------V-60---------------------------------
  31. INT 60 U - Buffit v3.0 - (NOT A VECTOR!) - INSTALLATION CHECK
  32. Program: Buffit is a shareware scrollback utility by D.T. Hamilton
  33. Notes:    Buffit searches INT 60 through INT 6F for a vector which points at
  34.       the ASCII signature "Buffit  ", and uses the first free vector in
  35.       that range if it is not already installed
  36.     there is a private entry point immediately following the signature
  37.       string, i.e. eight bytes beyond the address pointed at by the
  38.       interrupt
  39.  
  40. Call private entry point with:
  41.     AH = function
  42.         00h get information and hotkey state
  43.         01h get information and toggle hotkey state
  44. Return: AH = new hotkey state (00h enabled, 01h disabled)
  45.     AL = hotkey scan code
  46.     BH = hotkey shift states
  47.     BL = ??? (01h)
  48.     CX = segment of resident code
  49.     DH = niterrupt number used for signature pointer
  50.     DL = ??? (00h)
  51.     SI = INT 09 handler offset
  52.     DI = INT 21 handler offset
  53. Index:    hotkeys;Buffit
  54. ----------60---------------------------------
  55. INT 60 - PC-IPC API
  56.     STACK:    DWORD    pointer to parameter block (see below)
  57. Return: STACK:    unchanged
  58. Program: PC-IPC is a shareware TSR by Donnelly Software Engineering which
  59.       allows communication between independent programs
  60. Note:    INT 60 is the default, any interrupt vector may be used by specifying
  61.       the vector on the commandline
  62.  
  63. Format of parameter block:
  64. Offset    Size    Description
  65.  00h    WORD    caller's ID
  66.  02h    WORD    to ID
  67.  04h    WORD    command code (see below)
  68.  06h    WORD    returned status (see below)
  69.  08h    WORD    returned error code (see below)
  70.  0Ah    WORD    size of data
  71.  0Ch    DWORD    pointer to data buffer
  72.  
  73. Values for command code:
  74.  01h "IPC_CMND_INQUIRE"     inquire current status
  75.         set status field, writes WORD to data buffer containing free
  76.           message space in bytes, and sets the "size" field to the
  77.           number of messages waiting
  78.  02h "IPC_CMND_ENABLE"    reenable PC-IPC
  79.         ignored unless called with the same ID that disabled PC-IPC
  80.  03h "IPC_CMND_DISABLE" disable PC-IPC
  81.  04h "IPC_CMND_INSTALL" reset PC-IPC
  82.  06h "IPC_CMND_RDATA"    read data
  83.         returns first message in data buffer, sets "size" to message
  84.           length and "to ID" field to sender's ID
  85.         if no messages available, bit 4 of status is cleared and "size"
  86.           is set to zero
  87.  07h "IPC_CMND_SDATA"    send data
  88.  08h "IPC_CMND_REQID"    require user ID
  89.         create a new recognized ID and return in "caller's ID" field
  90.  09h "IPC_CMND_DELID"    cancel user ID
  91.         delete caller's ID from pool of recognized IDs
  92.  0Ah "IPC_CMND_RDATAW"    read data, wait if no messages available
  93.  0Bh "IPC_CMND_VERS"    get PC-IPC version
  94.         string representing version returned in data buffer, "size"
  95.           field set to length of string
  96.  
  97. Bitfields for returned status:
  98.  bit 0    unused
  99.  bit 1    IPC enabled
  100.  bit 2    IPC installed
  101.  bit 3    error
  102.  bit 4    message(s) available
  103.  
  104. Values for error code:
  105.  00h    no error
  106.  01h    invalid command or parameter
  107.  02h    only process 0 can install/reset IPC
  108.  03h    process can not install/reset IPC
  109.  04h    IPC is not enabled
  110.  05h    process can not disable IPC
  111.  06h    invalid destination process ID
  112.  07h    invalid sending process ID
  113.  08h    invalid data destination
  114.  09h    no more process IDs available
  115.  0Ah    can not relinquish that process ID
  116.  0Bh    message space is full
  117.  0Ch    IPC is not installed
  118. --------R-60---------------------------------
  119. INT 60 - Tangram Arbiter - API
  120. Notes:    Arbiter may use any interrupt from 60h to 66h (parameterized)
  121.     identified by string "@ARB_API" immediately following a short jump at
  122.       the interrupt handler address
  123.     Arbiter makes a PC disk look like a slow disk over an SNA link to an
  124.       IBM mainframe
  125. --------N-60---------------------------------
  126. INT 60 - Excelan LAN Workplace for DOS 3.5 - API
  127.     ES:BX -> request packet
  128. Return: request packet updated
  129. Notes:    this interrupt is also supported by Beame&Whiteside's BWLWP35 shim,
  130.       which was used in creating this description
  131.     the installation check consists of testing for the WORD 4142h ('AB')
  132.       immediately preceding the interrupt handler
  133. BUG:    because BWLWP35 range-checks only the low byte of the function number,
  134.       and has a fencepost error even in that test, functions 000Bh and
  135.       XX01h-XX0Bh (XX nonzero) branch to random locations
  136. SeeAlso: INT 2F/AX=7A40h
  137.  
  138. Format of request packet:
  139. Offset    Size    Description
  140.  00h 12 BYTEs    ???
  141.  0Ch    WORD    (return) error code (see below)
  142.  0Eh    DWORD    -> FAR function for ???
  143.  12h    WORD    function number
  144.         0001h ???
  145.         0002h NOP
  146.         0003h NOP
  147.         0004h NOP
  148.         0005h ???
  149.         0006h get ??? record
  150.         0007h NOP
  151.         0008h reset ???
  152.         0009h NOP
  153.         000Ah set ???
  154.     ???
  155. ---function 01h---
  156.  20h    BYTE    (call) subfunction (32h-3Bh)
  157.         3Bh non-blocking I/O request (will be tested every clock tick)
  158.  21h    BYTE    (return) error code
  159.         00h successful
  160.         09h invalid connection number
  161.         2Ah bad connection type
  162.         45h ???
  163. ---function 01h, subfunction 32h---
  164.  3Ah    WORD    (call) connection type (01h stream, 02h datagram)
  165. ---function 01h, subfunction 34h---
  166.  26h    WORD    (call) ???
  167.  28h    WORD    (call) ???
  168.  2Ah    WORD    (call) ???
  169. ---function 01h, subfunction 35h---
  170.  1Ah    WORD    (call) connection number???
  171.  26h    WORD    (return) ???
  172. ---function 01h, subfunction 36h---
  173.  1Ah    WORD    (call) connection number???
  174.  38h    WORD    ???
  175. ---function 01h, subfunction 37h---
  176.  24h    WORD    (return) ???
  177.  26h    WORD    (return) ???
  178. ---function 01h, subfunction 38h---
  179.  1Ah    WORD    (call) connection number???
  180. ---function 01h, subfunction 3Ah---
  181.  22h    WORD    (call) ???
  182.         667Eh ???
  183.         667Fh ???
  184.  24h    BYTE    (call 667Eh) ???
  185.  24h    WORD    (return 667Fh) ???
  186. ---function 01h, subfunction 3Bh---
  187.  0Eh    DWORD    (call) -> function to invoke for I/O or 0000h:0000h
  188.         function called with AX = 0000h
  189.                      STACK: DWORD -> request packet
  190.                         WORD 0000h
  191.             should return STACK unchanged
  192.  1Ah    WORD    (call) connection number???
  193.  21h    BYTE    (return) set to 01h when I/O becomes possible
  194.  22h    BYTE    (call) direction (00h write, 01h read)
  195.  34h    DWORD    (return) -> next pending request packet
  196. ---function 05h---
  197.  1Eh    WORD    (call) ???
  198.  20h    WORD    (call) ???
  199.  34h    DWORD    (call) -> ???
  200. ---function 06h---
  201.  16h    DWORD    (call) -> buffer for ??? record (see below)
  202.  1Ah    WORD    (call) number of bytes to copy
  203.  22h    WORD    (return) number of bytes transferred
  204. ---function 08h---
  205.  14h    WORD    (return) ??? (0001h)
  206. ---function 0Ah---
  207.  16h    DWORD    (call) -> WORD ???
  208.  1Ch    WORD    (call) must be 000Ah for BWLWP35
  209.  
  210. Values for error code:
  211.  0000h    successful
  212.  002Dh    invalid function
  213.  0050h    ???
  214.  
  215. Format of ??? record:
  216. Offset    Size    Description
  217.  00h    WORD    offset of ???
  218.  02h  4 BYTEs    ???
  219.  06h    DWORD    IP address (big-endian)
  220.  0Ah  6 BYTEs    physical address (big-endian)
  221.     ???
  222. --------G-60---------------------------------
  223. INT 60 U - INTRSPY/CMDSPY API
  224. Program: INTRSPY is a script-driven debugger included with the book
  225.       _Undocumented_DOS_.
  226. Notes:    INTRSPY will hook the first available interrupt in the range 60h-67h.
  227.     The installation check is to
  228.       a) determine that the handler is an IRET instruction
  229.       b) the signature 0Dh "INTRSPY vN.NN" immediately precedes the handler
  230.       If INTRSPY is installed, the DWORD immediately after the IRET stores
  231.       its entry point.
  232. Index:    installation check;INTRSPY
  233.  
  234. Call INTRSPY entry point with:
  235.     AH = function
  236.         00h ???
  237.         01h set current directory (for use in reporting)
  238.         ES:DI -> counted string containing directory name (max 79 char)
  239.         02h set name of script file
  240.         ES:DI -> counted string containing file name (max 79 chars)
  241.         03h set script arguments
  242.         ES:DI -> counted string containing arguments (max 79 chars)
  243.         04h get directory set with function 01h
  244.         ES:DI -> 80-byte buffer for directory name
  245.         05h get name of script file
  246.         ES:DI -> 80-byte buffer for script filename
  247.         06h get script arguments
  248.         ES:DI -> 80-byte buffer for script arguments
  249.         07h get ???
  250.         CL = 00h-15h specifies what to get
  251.         ES:DI -> WORD to be set with desired value on return
  252.         08h get ???
  253.         ES:DI -> WORD to be set with returned value
  254.         09h get ???
  255.         ES:DI -> WORD to be set with returned value
  256.         0Bh store code for interrupt handler???
  257.         ES:DI -> data
  258.         CX = number of bytes
  259.         0Ch ???
  260.         ES:DI -> ???
  261.         0Dh get ???
  262.         ES:DI -> BYTE to be set with returned value
  263.         0Eh set ??? flag
  264.         0Fh clear ??? flag
  265.         10h ???
  266.         Return: AL = 04h or 05h if failed
  267.         11h ???
  268.         Return: AL = 05h if failed
  269.         12h get ???
  270.         ES:DI -> buffer
  271.         Return: CX = number of bytes returned in buffer
  272.         13h ???
  273. Return: AH = 00h
  274.     AL = status
  275.         00h successful
  276.         01h invalid function
  277.         02h ???
  278.         03h ???
  279.         04h ???
  280.         05h ???
  281. --------u-60---------------------------------
  282. INT 60 U - PC/370 v4.2 - ???
  283.     ???
  284. Return: ???
  285. Program: PC/370 is an IBM 370 emulator by Donald S. Higgins
  286. Note:    this is the default interrupt, however the documentation includes
  287.       instructions for patching the system for another interrupt
  288. SeeAlso: INT 2F/AX=7F24h,INT DC"PC/370"
  289. --------r-60---------------------------------
  290. INT 60 - JPI TopSPEED Modula-2 v1 - PROCEDURE ENTRY TRAP
  291. SeeAlso: INT 61"JPI"
  292. --------N-60---------------------------------
  293. INT 60 - FTP Packet Driver - PC/TCP Packet Driver Specification
  294. Notes:    The handler for the interrupt will start with a 3-byte jump
  295.       instruction, followed by the ASCIZ string "PKT DRVR" (the
  296.       terminating NUL is significant).
  297.     To find the interrupt being used by the driver, an application should
  298.       scan through interrupt vectors 60h to 80h (20h through FFh for
  299.       v1.10+ of the specification) until it finds one with the "PKT DRVR"
  300.       string.
  301.     AH values of 80h to FFh have been reserved for user-defined additions.
  302. --------b-60----DI0100-----------------------
  303. INT 60 u - HP 95LX System Manager - WAIT FOR EVENT
  304.     DI = 0100h
  305.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  306.         DWORD    pointer to event record (see below)
  307. Return: event record filled
  308.     STACK unchanged
  309. Note:    this call will timeout after about 500ms
  310. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0101h,INT 61"HP 95LX",INT 62"HP 95LX"
  311.  
  312. Values for event type:
  313.  00h    no events
  314.  01h    keystroke available
  315.  02h    Ctrl-Break
  316.  03h    reactivation (always follows deactivation event)
  317.  04h    about to deactivate (sleep)
  318.     next get-event call will not return until reactivated
  319.  05h    forced application termination
  320.  06h    1-2-3 bridge service request (only given to 1-2-3)
  321.  07h    request to grow
  322.  08h    request to shrink
  323.  09h    application's alarm expired
  324.  0Ah    daily chance to set an alarm
  325.  0Bh    system date or time has been changed
  326.  
  327. Format of event record:
  328. Offset    Size    Description
  329.  00h    WORD    event type (see above)
  330.  02h    WORD    ASCII code page 850 translation of keystroke
  331.         or grow/shrink amount in paragraphs or 0000h if error
  332.         or alarm expiration data
  333.  04h    BYTE    scan code from BIOS
  334.  05h    BYTE    shift key states at time keystroke is retrieved
  335.  06h    WORD    LICS translation of keystroke
  336.  08h    BYTE    function key number (1-2-3 only)
  337.  09h    DWORD    pointer to 1-2-3 bridge record (see INT 60/DI=0104h)
  338.         or pointer to time change structure (see below)
  339. Note:    if the System Manager is awaiting the conclusion of a bridge service
  340.       or grow/shrink call and the event type field is set to FFFFh on
  341.       entry, the SysMgr will resume
  342.  
  343. Format of time change structure:
  344. Offset    Size    Description
  345.  00h    WORD    old year
  346.  02h    BYTE    old month
  347.  03h    BYTE    old date
  348.  04h    BYTE    old day
  349.  05h    BYTE    old hour
  350.  06h    BYTE    old minute
  351.  07h    BYTE    old second
  352.  08h    BYTE    old hundredth of a second
  353.  09h  9 BYTEs    new time in same format as old time
  354. --------b-60----DI0101-----------------------
  355. INT 60 u - HP 95LX System Manager - CHECK FOR EVENT
  356.     DI = 0101h
  357.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  358.         DWORD pointer to event record (INT 60/DI=0100h)
  359. Return: event record filled
  360.     STACK unchanged
  361. Note:    this call returns immediately if no event is available
  362. SeeAlso: INT 60/DI=0100h
  363. --------b-60----DI0102-----------------------
  364. INT 60 u - HP 95LX System Manager - "SH_STATUS"
  365.     DI = 0102h
  366.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  367. Return: ???
  368.     STACK unchanged
  369. --------b-60----DI0104-----------------------
  370. INT 60 u - HP 95LX System Manager - LOTUS 1-2-3 BRIDGE SERVICES
  371.     DI = 0104h
  372.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  373.         DWORD pointer to bridge record (see below)
  374. Return: ???
  375.     STACK unchanged
  376.  
  377. Values for function code:
  378.  00h    test
  379.  01h    get range
  380.  02h    "GETRANGE_ADDR"
  381.  03h    "SETRANGE_ADDR"
  382.  04h    "GETRANGE_DATA"
  383.  05h    "SETRANGE_DATA"
  384.  06h    recalculate
  385.  07h    get cursor
  386.  08h    set cursor
  387.  09h    redisplay
  388.  0Ah    cell type
  389.  0Bh    "CALCTYPE"
  390.  
  391. Format of bridge record:
  392. Offset    Size    Description
  393.  00h    WORD    function code (see above)
  394.  02h    WORD    return code from 1-2-3
  395.  04h 16 BYTEs    ASCII range name
  396.  14h    WORD    start column of range
  397.  16h    WORD    start row of range
  398.  18h    WORD    end column of range
  399.  1Ah    WORD    end row of range
  400.  1Ch    WORD    order in which data is placed in buffer
  401.  1Eh    WORD    buffer size
  402.  20h    WORD    offset within bridge record's segment of buffer for cell data
  403. --------b-60----DI0105-----------------------
  404. INT 60 u - HP 95LX System Manager - FLUSH KEYBOARD BUFFER
  405.     DI = 0105h
  406.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  407. Return: ???
  408.     STACK unchanged
  409. --------b-60----DI0106-----------------------
  410. INT 60 u - HP 95LX System Manager - YIELD CPU
  411.     DI = 0106h
  412.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  413.         DWORD pointer to ???
  414. Return: ???
  415.     STACK unchanged
  416. SeeAlso: INT 15/AX=1000h,INT 2F/AX=1680h
  417. --------b-60----DI0107-----------------------
  418. INT 60 u - HP 95LX System Manager - "NO_FINI" - REFUSE TERMINATION REQUEST
  419.     DI = 0107h
  420.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  421.         DWORD pointer to ???
  422. Return: ???
  423.     STACK unchanged
  424. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  425. --------b-60----DI0200-----------------------
  426. INT 60 u - HP 95LX System Manager - SETUP MENU
  427.     DI = 0200h
  428.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  429.         DWORD    pointer to menu data (see below)
  430.         DWORD    pointer to ???
  431.         WORD    number of items on menu???
  432.         WORD    ???
  433.         DWORD    pointer to ???
  434.         WORD    ???
  435.         DWORD    pointer to ???
  436. Return: ???
  437.     STACK unchanged
  438. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0201h,INT 60/DI=0203h,INT 60/DI=0205h
  439.  
  440. Format of menu data:
  441. Offset    Size    Description
  442.  00h 80 BYTEs    first line of menu text
  443.  50h 80 BYTEs    second line of menu text
  444.  A0h 80 BYTEs    third line of menu text
  445.  F0h    WORD    number of keywords
  446.  F2h    WORD    index of currently highlighted keyword or FFFFh
  447.  F4h    WORD    single prompt on top line if nonzero
  448.  F6h 20 BYTEs    which line each of 20 keywords is located on
  449. 10Ah 20 BYTEs    offset of each of 20 keywords within its line
  450. 11Eh 20 BYTEs    length of each of 20 keywords
  451. 132h 20 BYTEs    first letter of each of 20 keywords
  452. 146h 20 WORDs    offsets of long prompts for each of 20 keywords
  453. --------b-60----DI0201-----------------------
  454. INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY MENU
  455.     DI = 0201h
  456.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  457.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  458. Return: ???
  459.     STACK unchanged
  460. SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0206h
  461. --------b-60----DI0202-----------------------
  462. INT 60 u - HP 95LX System Manager - "MENU_ON" - ENABLE PROCESSING OF MENU
  463.     DI = 0202h
  464.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  465.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  466. Return: ???
  467.     STACK unchanged
  468. SeeAlso: INT 60/DI=0200h,INT 60/DI=0201h,INT 60/DI=0203h
  469. --------b-60----DI0203-----------------------
  470. INT 60 u - HP 95LX System Manager - REMOVE MENU
  471.     DI = 0203h
  472.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  473.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  474. Return: ???
  475.     STACK unchanged
  476. SeeAlso: INT 60/DI=0201h,INT 60/DI=0202h,INT 60/DI=0204h,INT 60/DI=0208h
  477. --------b-60----DI0204-----------------------
  478. INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER HANDLE MENU KEYSTROKE
  479.     DI = 0204h
  480.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  481.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  482.         WORD    keystroke
  483.         DWORD    pointer to WORD to receive selection number
  484. Return: buffer for selection number filled with index of selected menu item or
  485.       FFFFh if no final selection yet
  486.     STACK unchanged
  487. SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0207h
  488. --------b-60----DI0205-----------------------
  489. INT 60 u - HP 95LX System Manager - INITIALIZE FILE SELECTION MENU
  490.     DI = 0205h
  491.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  492.         DWORD    pointer to file menu structure (see below)
  493.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  494.         DWORD    pointer to wildcard filespec for initial file list
  495.         WORD    row???
  496.         WORD    column???
  497. Return: ???
  498.     STACK unchanged
  499. SeeAlso: INT 60/DI=0200h,INT 60/DI=0206h,INT 60/DI=0208h
  500.  
  501. Format of file menu structure:
  502. Offset    Size    Description
  503.  00h    DWORD    pointer to ASCIZ base directory name
  504.  04h    DWORD    pointer to ASCIZ file pattern (wildcard filespec)
  505.  08h    DWORD    pointer to file list workspace, at least 1024 bytes (see below)
  506.  0Ch    WORD    size of file list workspace in bytes
  507.  0Eh    WORD    starting row (-3 is topmost, 0 is first non-"reserved" line)
  508.  10h    WORD    starting column
  509.  12h    WORD    number of lines
  510.  14h    WORD    number of columns
  511.  16h    WORD    number of files displayed on each line
  512. ---the remaining fields are initialized by the System Manager---
  513.  18h    WORD    0000h if first edit character, else multiline
  514.  1Ah    WORD    number of files in file list
  515.  1Ch    WORD    max files workspace has room for
  516.  1Eh    WORD    file at top of list
  517.  20h    WORD    index of file to highlight
  518.  22h    WORD    index of file to unhighlight
  519.  24h    WORD    current focus (01h FMENU, 02h EDIT)
  520.  
  521. Format of file list workspace entry:
  522. Offset    Size    Description
  523.  00h    BYTE    file attributes
  524.  01h    WORD    file time (see INT 21/AX=5700h)
  525.  03h    WORD    file date (see INT 21/AX=5700h)
  526.  05h    DWORD    file size
  527.  09h 13 BYTEs    ASCIZ filename
  528. --------b-60----DI0206-----------------------
  529. INT 60 u - HP 95LX System Manager - DISPLAY/REDISPLAY FILE SELECTION MENU
  530.     DI = 0206h
  531.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  532.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  533.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  534. Return: ???
  535.     STACK unchanged
  536. SeeAlso: INT 60/DI=0205h
  537. --------b-60----DI0207-----------------------
  538. INT 60 u - HP 95LX System Manager - LET SYSMGR PROCESS FILE SEL MENU KEYSTROKE
  539.     DI = 0207h
  540.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  541.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  542.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  543.         WORD    keystroke
  544. Return: AX = status
  545.         0000h keystroke processed, call INT 60/DI=0206h to refresh menu
  546.         0001h redisplay application area before refreshing menu
  547.         0002h user confirmed selection, filename is in edit record's buffer
  548.         0003h user aborted menu
  549.         FFFBh bad filename
  550.         FFFCh bad directory
  551.         FFFDh bad drive
  552.         FFFEh unknown keystroke
  553.         FFFFh keystroke known but invalid in current context
  554.     STACK unchanged
  555. SeeAlso: INT 60/DI=0205h,INT 60/DI=0208h
  556. --------b-60----DI0208-----------------------
  557. INT 60 u - HP 95LX System Manager - REMOVE FILE SELECTION MENU
  558.     DI = 0208h
  559.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  560.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  561.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  562. Return: ???
  563.     STACK unchanged
  564. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0205h,INT 60/DI=0206h
  565. --------b-60----DI0300-----------------------
  566. INT 60 u - HP 95LX System Manager - DISPLAY STRING
  567.     DI = 0300h
  568.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  569.         WORD    starting row (-3 is topmost, 0 is first user line)
  570.         WORD    starting column
  571.         DWORD    pointer to string
  572.         WORD    length of string
  573.         WORD    display style: 0000h normal, 0001h reverse video
  574.         WORD    "OSTYLE"
  575. Return: ???
  576.     STACK unchanged
  577. SeeAlso: INT 60/DI=0F03h,INT 60/DI=1005h
  578. --------b-60----DI0301-----------------------
  579. INT 60 u - HP 95LX System Manager - CLEAR PORTION OF SCREEN
  580.     DI = 0301h
  581.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  582.         WORD    starting row (-3 is topmost, 0 is first user line)
  583.         WORD    starting column
  584.         WORD    number of rows
  585.         WORD    number of columns
  586. Return: ???
  587.     STACK unchanged
  588. SeeAlso: INT 60/DI=0302h,INT 60/DI=1005h
  589. --------b-60----DI0302-----------------------
  590. INT 60 u - HP 95LX System Manager - SCROLL PORTION OF SCREEN
  591.     DI = 0302h
  592.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  593.         WORD    starting row???
  594.         WORD    starting column???
  595.         WORD    height of scroll region???
  596.         WORD    width of scroll region???
  597.         WORD    number of lines to scroll region???
  598. Return: ???
  599.     STACK unchanged
  600. SeeAlso: INT 60/DI=0301h
  601. --------b-60----DI0303-----------------------
  602. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_XCHG"
  603.     DI = 0303h
  604.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  605.         WORD    ???
  606.         WORD    ???
  607.         WORD    ???
  608.         WORD    ???
  609.         DWORD    pointer to ???
  610. Return: ???
  611.     STACK unchanged
  612. --------b-60----DI0304-----------------------
  613. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRATTR"
  614.     DI = 0304h
  615.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  616.         DWORD    pointer to ???
  617.         WORD    ???
  618. Return: ???
  619.     STACK unchanged
  620. --------b-60----DI0305-----------------------
  621. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRRVRT"
  622.     DI = 0305h
  623.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  624.         WORD    ???
  625.         WORD    ???
  626.         DWORD    pointer to ???
  627.         WORD    ???
  628. Return: ???
  629.     STACK unchanged
  630. --------b-60----DI0307-----------------------
  631. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRINV"
  632.     DI = 0307h
  633.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  634.         WORD    ???
  635.         WORD    ???
  636.         WORD    ???
  637. Return: ???
  638.     STACK unchanged
  639. --------b-60----DI0308-----------------------
  640. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_ROWS_COLS"
  641.     DI = 0308h
  642.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  643. Return: ???
  644.     STACK unchanged
  645. --------b-60----DI0309-----------------------
  646. INT 60 u - HP 95LX System Manager - SET SCREEN (VIDEO???) MODE
  647.     DI = 0309h
  648.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  649.         WORD    new mode
  650. Return: ???
  651.     STACK unchanged
  652. --------b-60----DI030A-----------------------
  653. INT 60 u - HP 95LX System Manager - GET SCREEN (VIDEO???) MODE
  654.     DI = 030Ah
  655.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  656. Return: ???
  657.     STACK unchanged
  658. --------b-60----DI030B-----------------------
  659. INT 60 u - HP 95LX System Manager - SET CURSOR POSITION
  660.     DI = 030Bh
  661.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  662.         WORD    row (-3 is topmost, 0 is first non-reserved line)
  663.         WORD    column
  664. Return: ???
  665.     STACK unchanged
  666. Note:    cursor is hidden if the specified position is not on the physical
  667.       display
  668. SeeAlso: INT 10/AH=02h,INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  669. --------b-60----DI0400-----------------------
  670. INT 60 u - HP 95LX System Manager - "EDIT_INIT"
  671.     DI = 0400h
  672.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  673.         DWORD    pointer to edit record (see below)
  674.         DWORD    pointer to string to be edited
  675.         WORD    initial length of string being edited
  676.         WORD    maximum length of edited string
  677.         WORD    row of edit field
  678.         WORD    leftmost column of edit field
  679. Return: ???
  680.     STACK unchanged
  681.  
  682. Format of edit record:
  683. Offset    Size    Description
  684.  00h    WORD    current length of edit buffer
  685.  02h    BYTE    flag for special processing on first character
  686.  03h    BYTE    flags
  687.         bit 0: tab handling
  688.  04h    WORD    editing in prompt window?
  689.  06h    DWORD    pointer to top line of prompt window message
  690.  0Ah    WORD    length of top line of prompt
  691.  0Ch    DWORD    pointer to second line of prompt window message
  692.  10h    WORD    length of second line of prompt
  693.  12h 80 BYTEs    workspace for editing
  694.  62h  2 WORDs    line array needed for multi-line editing
  695.  66h 36 BYTEs    multi-line edit record (see below)
  696.  8Ah    WORD    displayable columns
  697.  
  698. Format of multi-line edit record:
  699. Offset    Size    Description
  700.  00h    DWORD    pointer to user-supplied edit buffer
  701.  04h    WORD    length of edit buffer
  702.  06h    WORD    current cursor position
  703.  08h    WORD    starting row of edit area (-3 is topmost, 0 is first user line)
  704.  0Ah    WORD    starting column of edit area
  705.  0Ch    WORD    height of edit area
  706.  0Eh    WORD    width of edit area
  707.  10h    WORD    current top row (-3 is topmost, 0 is first user line)
  708.  12h    WORD    number of rows displayable
  709.  14h    BYTE    cursor column
  710.  15h    BYTE    01h if buffer has been modified
  711.  16h    BYTE    first displayable column (ticker fields only)
  712.  17h    BYTE    01h if wordwrap enabled, FFh if ticker field
  713.  18h    DWORD    pointer to array of line starts (at least one bigger than edit
  714.           area is high)
  715.  1Ch    BYTE    currently marking?
  716.  1Dh    BYTE    flag
  717.  1Eh    WORD    offset of mark start
  718.  20h    WORD    offset of mark end (inclusive)
  719.  22h    WORD    displayable columns
  720. --------b-60----DI0401-----------------------
  721. INT 60 u - HP 95LX System Manager - EDIT ON TOP LINE
  722.     DI = 0401h
  723.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  724.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  725.         DWORD    pointer to string to edit
  726.         WORD    initial length of string being edited
  727.         WORD    maximum length of edited string
  728.         DWORD    pointer to first line of prompt
  729.         WORD    length of first line
  730.         DWORD    pointer to second line of prompt
  731.         WORD    length of second line
  732. Return: ???
  733.     STACK unchanged
  734. --------b-60----DI0402-----------------------
  735. INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY EDIT FIELD
  736.     DI = 0402h
  737.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  738.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  739. Return: ???
  740.     STACK unchanged
  741. --------b-60----DI0403-----------------------
  742. INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER PROCESS EDITING KEYSTROK
  743.     DI = 0403h
  744.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  745.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  746.         WORD    keystroke
  747.         DWORD    pointer to WORD buffer for result code
  748. Return: result code buffer filled with 0001h if editing complete
  749.     STACK unchanged
  750. --------b-60----DI0404-----------------------
  751. INT 60 u - HP 95LX System Manager - "MDIT_INI"
  752.     DI = 0404h
  753.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  754.         DWORD    pointer to ???
  755.         WORD    ???
  756.         WORD    ???
  757.         WORD    ???
  758.         WORD    ???
  759.         DWORD    pointer to ???
  760.         WORD    ???
  761.         WORD    ???
  762.         WORD    ???
  763.         DWORD    pointer to ???
  764. Return: ???
  765.     STACK unchanged
  766. --------b-60----DI0405-----------------------
  767. INT 60 u - HP 95LX System Manager - "MDIT_DIS"
  768.     DI = 0405h
  769.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  770.         DWORD    pointer to ???
  771. Return: ???
  772.     STACK unchanged
  773. --------b-60----DI0406-----------------------
  774. INT 60 u - HP 95LX System Manager - "MDIT_KEY"
  775.     DI = 0406h
  776.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  777.         DWORD    pointer to ???
  778.         WORD    ???
  779. Return: ???
  780.     STACK unchanged
  781. --------b-60----DI0407-----------------------
  782. INT 60 u - HP 95LX System Manager - "MDIT_FIL"
  783.     DI = 0407h
  784.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  785.         DWORD    pointer to ???
  786.         DWORD    pointer to ???
  787. Return: ???
  788.     STACK unchanged
  789. --------b-60----DI0408-----------------------
  790. INT 60 u - HP 95LX System Manager - "MDIT_MARK"
  791.     DI = 0408h
  792.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  793.         DWORD    pointer to ???
  794. Return: ???
  795.     STACK unchanged
  796. --------b-60----DI0409-----------------------
  797. INT 60 u - HP 95LX System Manager - "MDIT_UNMARK"
  798.     DI = 0409h
  799.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  800.         DWORD    pointer to ???
  801. Return: ???
  802.     STACK unchanged
  803. --------b-60----DI040A-----------------------
  804. INT 60 u - HP 95LX System Manager - "MDIT_CUTMARK"
  805.     DI = 040Ah
  806.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  807.         DWORD    pointer to ???
  808. Return: ???
  809.     STACK unchanged
  810. --------b-60----DI040B-----------------------
  811. INT 60 u - HP 95LX System Manager - "MDIT_INS_STR"
  812.     DI = 040Bh
  813.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  814.         DWORD    pointer to ???
  815.         DWORD    pointer to ???
  816.         WORD    ???
  817. Return: ???
  818.     STACK unchanged
  819. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  820. --------b-60----DI0500-----------------------
  821. INT 60 u - HP 95LX System Manager - OPEN FILE
  822.     DI = 0500h
  823.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  824.         DWORD    pointer to file state record (see below)
  825.         DWORD    pointer to filename
  826.         WORD    length of filename
  827.         WORD    ???
  828.         WORD    suppress buffering if nonzero
  829. Return: AX = status
  830.     STACK unchanged
  831. SeeAlso: INT 60/DI=0501h,INT 60/DI=0502h,INT 60/DI=0508h
  832.  
  833. Format of file state record:
  834. Offset    Size    Description
  835.  00h    WORD    DOS file handle
  836.  02h    WORD    flags
  837.         bit 0: buffer contents valid
  838.         bit 1: buffer is dirty and must be written
  839.         bit 2: unbuffered I/O
  840.         bit 3: file is a character device
  841.  04h    DWORD    current DOS physical file offset (FFFFFFFFh if unknown)
  842.  08h    DWORD    DOS file offset of start of buffer
  843.  0Ch    DWORD    effective file offset as seen by caller
  844.  10h    WORD    number of bytes in file buffer
  845. ---buffered I/O only---
  846.  12h 512 BYTEs    file buffer
  847. --------b-60----DI0501-----------------------
  848. INT 60 u - HP 95LX System Manager - OPEN FILE IN READ-ONLY MODE
  849.     DI = 0501h
  850.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  851.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  852.         DWORD    pointer to filename
  853.         WORD    length of filename
  854.         WORD    ???
  855.         WORD    suppress buffering if nonzero
  856. Return: AX = status
  857.     STACK unchanged
  858. SeeAlso: INT 60/DI=0500h
  859. --------b-60----DI0502-----------------------
  860. INT 60 u - HP 95LX System Manager - CREATE NEW FILE
  861.     DI = 0502h
  862.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  863.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  864.         DWORD    pointer to filename
  865.         WORD    length of filename
  866.         WORD    ???
  867.         WORD    suppress buffering if nonzero
  868. Return: AX = status
  869.     STACK unchanged
  870. SeeAlso: INT 60/DI=0500h,INT 60/DI=0503h
  871. --------b-60----DI0503-----------------------
  872. INT 60 u - HP 95LX System Manager - CREATE OR TRUNCATE FILE
  873.     DI = 0503h
  874.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  875.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  876.         DWORD    pointer to filename
  877.         WORD    length of filename
  878.         WORD    ???
  879.         WORD    suppress buffering if nonzero
  880. Return: AX = status
  881.     STACK unchanged
  882. SeeAlso: INT 60/DI=0502h
  883. --------b-60----DI0504-----------------------
  884. INT 60 u - HP 95LX System Manager - READ FROM FILE
  885.     DI = 0504h
  886.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  887.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  888.         DWORD    pointer to data buffer
  889.         WORD    number of bytes to read
  890.         DWORD    pointer to WORD in which to return actual bytes read
  891. Return: ???
  892.     STACK unchanged
  893. SeeAlso: INT 60/DI=0505h
  894. --------b-60----DI0505-----------------------
  895. INT 60 - HP 95LX System Manager - WRITE TO FILE
  896.     DI = 0505h
  897.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  898.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  899.         DWORD    pointer to data
  900.         WORD    length of data
  901. Return: AX = status
  902.     STACK unchanged
  903. SeeAlso: INT 60/DI=0504h
  904. --------b-60----DI0506-----------------------
  905. INT 60 u - HP 95LX System Manager - SET FILE POSITION
  906.     DI = 0506h
  907.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  908.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  909.         WORD    ???
  910.         WORD    ???
  911. Return: ???
  912.     STACK unchanged
  913. SeeAlso: INT 60/DI=0507h
  914. --------b-60----DI0507-----------------------
  915. INT 60 u - HP 95LX System Manager - GET FILE POSITION
  916.     DI = 0507h "M_TELL"
  917.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  918.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  919.         DWORD    pointer to DWORD buffer for file position???
  920. Return: ???
  921.     STACK unchanged
  922. SeeAlso: INT 60/DI=0506h
  923. --------b-60----DI0508-----------------------
  924. INT 60 u - HP 95LX System Manager - CLOSE FILE
  925.     DI = 0508h
  926.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  927.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  928. Return: ???
  929.     STACK unchanged
  930. SeeAlso: INT 60/DI=0500h
  931. --------b-60----DI0509-----------------------
  932. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETPAT"
  933.     DI = 0509h
  934.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  935.         DWORD    pointer to ???
  936.         DWORD    pointer to ???
  937.         WORD    ???
  938.         WORD    ???
  939. Return: ???
  940.     STACK unchanged
  941. --------b-60----DI050A-----------------------
  942. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_MATCH"
  943.     DI = 050Ah
  944.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  945.         DWORD    pointer to ???
  946.         DWORD    pointer to ???
  947. Return: ???
  948.     STACK unchanged
  949.  
  950. Format of pattern match control block:
  951. Offset    Size    Description
  952.  00h 43 BYTEs    FindFirst data block (see INT 21/AH=4Eh)
  953.  2Bh 80 BYTEs    full path name
  954.  7Bh    BYTE    offset of last component of filename
  955.  7Ch    BYTE    DOS function number (4Eh or 4Fh)
  956. --------b-60----DI050B-----------------------
  957. INT 60 u - HP 95LX System Manager - IDENTIFY FILENAME REFERENT
  958.     DI = 050Bh
  959.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  960.         DWORD    pointer to ???
  961.         WORD    ???
  962.         WORD    ???
  963.         DWORD    pointer to ???
  964. Return: ???
  965.     STACK unchanged
  966.  
  967. Values returned:
  968.  0000h nonexistent
  969.  0001h file
  970.  0002h directory
  971.  0003h character device
  972. --------b-60----DI050C-----------------------
  973. INT 60 u - HP 95LX System Manager - DELETE FILE
  974.     DI = 050Ch "M_DELETE"
  975.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  976.         DWORD    pointer to ???
  977.         WORD    ???
  978.         WORD    ???
  979. Return: ???
  980.     STACK unchanged
  981. --------b-60----DI050D-----------------------
  982. INT 60 u - HP 95LX System Manager - RENAME FILE
  983.     DI = 050Dh
  984.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  985.         DWORD    pointer to ???
  986.         WORD    ???
  987.         WORD    ???
  988.         DWORD    pointer to ???
  989.         WORD    ???
  990.         WORD    ???
  991. Return: ???
  992.     STACK unchanged
  993. --------b-60----DI050E-----------------------
  994. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETDIR"
  995.     DI = 050Eh
  996.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  997.         WORD    ???
  998.         DWORD    pointer to ???
  999.         DWORD    pointer to ???
  1000. Return: ???
  1001.     STACK unchanged
  1002. --------b-60----DI050F-----------------------
  1003. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETDIR"
  1004.     DI = 050Fh
  1005.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1006.         DWORD    pointer to ???
  1007.         WORD    ???
  1008. Return: ???
  1009.     STACK unchanged
  1010. --------b-60----DI0510-----------------------
  1011. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_VOLUME"
  1012.     DI = 0510h
  1013.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1014.         DWORD    pointer to ???
  1015.         DWORD    pointer to ???
  1016. Return: ???
  1017.     STACK unchanged
  1018. --------b-60----DI0511-----------------------
  1019. INT 60 u - HP 95LX System Manager - MAKE A SUBDIRECTORY
  1020.     DI = 0511h
  1021.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1022.         DWORD    pointer to ???
  1023.         WORD    ???
  1024.         WORD    ???
  1025. Return: ???
  1026.     STACK unchanged
  1027. --------b-60----DI0512-----------------------
  1028. INT 60 u - HP 95LX System Manager - REMOVE A SUBDIRECTORY
  1029.     DI = 0512h
  1030.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1031.         DWORD    pointer to ???
  1032.         WORD    ???
  1033.         WORD    ???
  1034. Return: ???
  1035.     STACK unchanged
  1036. --------b-60----DI0513-----------------------
  1037. INT 60 u - HP 95LX System Manager - GET DEFAULT DRIVE
  1038.     DI = 0513h
  1039.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1040.         DWORD    pointer to ??? buffer for current drive
  1041. Return: ???
  1042.     STACK unchanged
  1043. --------b-60----DI0514-----------------------
  1044. INT 60 u - HP 95LX System Manager - SET DEFAULT DRIVE
  1045.     DI = 0514h
  1046.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1047.         WORD    new drive
  1048. Return: ???
  1049.     STACK unchanged
  1050. --------b-60----DI0515-----------------------
  1051. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_FDATE"
  1052.     DI = 0515h
  1053.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1054.         DWORD    pointer to ???
  1055.         DWORD    pointer to ???
  1056. Return: ???
  1057.     STACK unchanged
  1058. --------b-60----DI0516-----------------------
  1059. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GET_SYSDIR"
  1060.     DI = 0516h
  1061.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1062.         DWORD    pointer to ???
  1063. Return: ???
  1064.     STACK unchanged
  1065. --------b-60----DI0517-----------------------
  1066. INT 60 u - HP 95LX System Manager - GET FILE ATTRIBUTES
  1067.     DI = 0517h
  1068.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1069.         DWORD    pointer to ???
  1070.         WORD    ???
  1071.         WORD    ???
  1072.         DWORD    pointer to ??? buffer for file's attributes???
  1073. Return: ???
  1074.     STACK unchanged
  1075. --------b-60----DI0518-----------------------
  1076. INT 60 u - HP 95LX System Manager - SET FILE ATTRIBUTES
  1077.     DI = 0518h
  1078.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1079.         DWORD    pointer to ???
  1080.         WORD    ???
  1081.         WORD    ???
  1082.         WORD    new attributes???
  1083. Return: ???
  1084.     STACK unchanged
  1085. --------b-60----DI0519-----------------------
  1086. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COMMON_OPEN"
  1087.     DI = 0519h
  1088.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1089.         DWORD    pointer to ???
  1090.         DWORD    pointer to ???
  1091.         WORD    ???
  1092.         WORD    ???
  1093.         WORD    ???
  1094.         WORD    ???
  1095.         WORD    ???
  1096. Return: ???
  1097.     STACK unchanged
  1098. --------b-60----DI051A-----------------------
  1099. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COPYDT"
  1100.     DI = 051Ah
  1101.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1102.         DWORD    pointer to ???
  1103.         DWORD    pointer to ???
  1104. Return: ???
  1105.     STACK unchanged
  1106. --------b-60----DI051B-----------------------
  1107. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETFDT"
  1108.     DI = 051Bh
  1109.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1110.         DWORD    pointer to ???
  1111.         DWORD    pointer to ???
  1112. Return: ???
  1113.     STACK unchanged
  1114. --------b-60----DI051C-----------------------
  1115. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_PUTFDT"
  1116.     DI = 051Ch
  1117.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1118.         DWORD    pointer to ???
  1119.         WORD    ???
  1120. Return: ???
  1121.     STACK unchanged
  1122. --------b-60----DI0600-----------------------
  1123. INT 60 u - HP 95LX System Manager - PROCESS INITIALIZING
  1124.     DI = 0600h
  1125.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1126. Return: ???
  1127.     STACK unchanged
  1128. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0601h,INT 61"HP 95LX"
  1129. --------b-60----DI0601-----------------------
  1130. INT 60 u - HP 95LX System Manager - PROCESS TERMINATION
  1131.     DI = 0601h
  1132.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1133. Return: never
  1134.     STACK unchanged
  1135. SeeAlso: INT 21/AH=4Ch,INT 60/DI=0600h
  1136. --------b-60----DI0602-----------------------
  1137. INT 60 u - HP 95LX System Manager - "M_LOCK" - PREVENT TASK SWITCHES
  1138.     DI = 0602h
  1139.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1140. Return: ???
  1141.     STACK unchanged
  1142. SeeAlso: INT 15/AX=101Bh,INT 60/DI=0603h
  1143. --------b-60----DI0603-----------------------
  1144. INT 60 u - HP 95LX System Manager - "M_UNLOCK" - ALLOW TASK SWITCHES
  1145.     DI = 0603h
  1146.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1147. Return: ???
  1148.     STACK unchanged
  1149. SeeAlso: INT 15/AX=101Ch,INT 60/DI=0602h
  1150. --------b-60----DI0604-----------------------
  1151. INT 60 u - HP 95LX System Manager - "M_SPAWN"
  1152.     DI = 0604h
  1153.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1154.         DWORD    pointer to ???
  1155.         WORD    ???
  1156.         WORD    ???
  1157.         DWORD    pointer to ???
  1158. Return: ???
  1159.     STACK unchanged
  1160. --------b-60----DI0605-----------------------
  1161. INT 60 u - HP 95LX System Manager - "M_APPCOUNT"
  1162.     DI = 0605h
  1163.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1164. Return: ???
  1165.     STACK unchanged
  1166. --------b-60----DI0606-----------------------
  1167. INT 60 u - HP 95LX System Manager - "M_REBOOT"
  1168.     DI = 0606h
  1169.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1170. Return: ???
  1171.     STACK unchanged
  1172. --------b-60----DI0607-----------------------
  1173. INT 60 u - HP 95LX System Manager - "M_SPAWNARG"
  1174.     DI = 0607h
  1175.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1176.         DWORD    pointer to ???
  1177.         WORD    ???
  1178.         DWORD    pointer to ???
  1179.         WORD    ???
  1180. Return: ???
  1181.     STACK unchanged
  1182. --------b-60----DI0608-----------------------
  1183. INT 60 u - HP 95LX System Manager - "M_REG_APP_NAME"
  1184.     DI = 0608h
  1185.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1186.         DWORD    pointer to ???
  1187. Return: ???
  1188.     STACK unchanged
  1189. --------b-60----DI0609-----------------------
  1190. INT 60 u - HP 95LX System Manager - "M_APP_NAME"
  1191.     DI = 0609h
  1192.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1193.         DWORD    pointer to ???
  1194. Return: DX:AX -> ???
  1195.     STACK unchanged
  1196. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  1197. --------b-60----DI0700-----------------------
  1198. INT 60 u - HP 95LX System Manager - OPEN CLIPBOARD
  1199.     DI = 0700h
  1200.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1201. Return: ???
  1202.     STACK unchanged
  1203. SeeAlso: INT 60/DI=0701h,INT 60/DI=0702h
  1204.  
  1205. Values for error code:
  1206.  0000h    successful
  1207.  FFF8h    transfer request out of bounds
  1208.  FFF9h    no such representation
  1209.  FFFAh    no representation open
  1210.  FFFBh    a representation is already open
  1211.  FFFCh    representation already exists
  1212.  FFFDh    heap allocation failure
  1213.  FFFEh    clipboard not open
  1214.  FFFFh    clipboard access denied
  1215. --------b-60----DI0701-----------------------
  1216. INT 60 u - HP 95LX System Manager - CLOSE CLIPBOARD
  1217.     DI = 0701h
  1218.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1219. Return: ???
  1220.     STACK unchanged
  1221. SeeAlso: INT 60/DI=0700h,INT 60/DI=0702h
  1222. --------b-60----DI0702-----------------------
  1223. INT 60 u - HP 95LX System Manager - RESET CLIPBOARD
  1224.     DI = 0702h
  1225.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1226.         DWORD    pointer to ???
  1227. Return: ???
  1228.     STACK unchanged
  1229. SeeAlso: INT 60/DI=0700h
  1230. --------b-60----DI0704-----------------------
  1231. INT 60 u - HP 95LX System Manager - "M_NEW_REP" - START A NEW REPRESENTATION???
  1232.     DI = 0704h
  1233.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1234.         DWORD    pointer to ???
  1235. Return: ???
  1236.     STACK unchanged
  1237. SeeAlso: INT 60/DI=0705h,INT 60/DI=0706h,INT 60/DI=0707h
  1238. --------b-60----DI0705-----------------------
  1239. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_FINI_REP"
  1240.     DI = 0705h
  1241.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1242. Return: ???
  1243.     STACK unchanged
  1244. SeeAlso: INT 60/DI=0704h
  1245. --------b-60----DI0706-----------------------
  1246. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_NAME"
  1247.     DI = 0706h
  1248.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1249.         WORD    ???
  1250.         DWORD    pointer to ???
  1251.         DWORD    pointer to ???
  1252. Return: ???
  1253.     STACK unchanged
  1254. SeeAlso: INT 60/DI=0704h,INT 60/DI=0707h
  1255. --------b-60----DI0707-----------------------
  1256. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_INDEX"
  1257.     DI = 0707h
  1258.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1259.         DWORD    pointer to ???
  1260.         DWORD    pointer to ???
  1261.         DWORD    pointer to ???
  1262. Return: ???
  1263.     STACK unchanged
  1264. SeeAlso: INT 60/DI=0704h,INT 60/DI=0706h
  1265. --------b-60----DI0708-----------------------
  1266. INT 60 u - HP 95LX System Manager - WRITE TO CLIPBOARD
  1267.     DI = 0708h
  1268.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1269.         DWORD    pointer to data to be written???
  1270.         WORD    length of data???
  1271. Return: ???
  1272.     STACK unchanged
  1273. SeeAlso: INT 60/DI=0709h
  1274. --------b-60----DI0709-----------------------
  1275. INT 60 u - HP 95LX System Manager - READ FROM CLIPBOARD
  1276.     DI = 0709h
  1277.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1278.         WORD    ???
  1279.         WORD    ???
  1280.         DWORD    pointer to buffer for data???
  1281.         WORD    length of buffer???
  1282. Return: ???
  1283.     STACK unchanged
  1284. SeeAlso: INT 60/DI=0708h
  1285. --------b-60----DI0800-----------------------
  1286. INT 60 u - HP 95LX System Manager - BEEP
  1287.     DI = 0800h
  1288.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1289. Return: ???
  1290.     STACK unchanged
  1291. SeeAlso: INT 60/DI=0801h,INT 60/DI=0802h,INT 60/DI=0803h
  1292. --------b-60----DI0801-----------------------
  1293. INT 60 u - HP 95LX System Manager - SOUND SERVICE "M_THUD"
  1294.     DI = 0801h
  1295.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1296. Return: ???
  1297.     STACK unchanged
  1298. SeeAlso: INT 60/DI=0800h,INT 60/DI=0802h,INT 60/DI=0803h
  1299. --------b-60----DI0802-----------------------
  1300. INT 60 u - HP 95LX System Manager - MAKE A SOUND PATTERN
  1301.     DI = 0802h
  1302.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1303.         WORD    pattern number (00h-06h)
  1304. Return: ???
  1305.     STACK unchanged
  1306. SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0803h
  1307. --------b-60----DI0803-----------------------
  1308. INT 60 u - HP 95LX System Manager - TURN OFF SOUND
  1309.     DI = 0803h
  1310.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1311. Return: ???
  1312.     STACK unchanged
  1313. SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0802h
  1314. --------b-60----DI0900-----------------------
  1315. INT 60 - HP 95LX System Manager - ALLOCATE REGULAR MEMORY BLOCK
  1316.     DI = 0900h
  1317.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1318.         WORD    size of block in bytes
  1319. Return: AX -> memory block
  1320.     STACK unchanged
  1321. Note:    System Manager-compliant applications are always small-model (64K code,
  1322.       64K data)
  1323. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0902h,INT 60/DI=0903h
  1324. --------b-60----DI0902-----------------------
  1325. INT 60 u - HP 95LX System Manager - FREE REGULAR MEMORY BLOCK
  1326.     DI = 0902h
  1327.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1328.         WORD    offset of memory block???
  1329. Return: ???
  1330.     STACK unchanged
  1331. Note:    System Manager-compliant applications are always small-model (64K code,
  1332.       64K data)
  1333. SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
  1334. --------b-60----DI0903-----------------------
  1335. INT 60 u - HP 95LX System Manager - ALLOCATE LARGE MEMORY BLOCK
  1336.     DI = 0903h
  1337.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1338.         WORD    size of block in bytes???
  1339. Return: AX -> memory block???
  1340.     STACK unchanged
  1341. SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
  1342. --------b-60----DI0904-----------------------
  1343. INT 60 u - HP 95LX System Manager - FREE LARGE MEMORY BLOCK
  1344.     DI = 0904h
  1345.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1346.         WORD    segment of memory block???
  1347. Return: AX -> ???
  1348.     STACK unchanged
  1349. SeeAlso: INT 60/DI=0902h,INT 60/DI=0903h
  1350. --------b-60----DI0B00-----------------------
  1351. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DTINFO"
  1352.     DI = 0B00h
  1353.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1354.         DWORD    pointer to ???
  1355. Return: ???
  1356.     STACK unchanged
  1357. --------b-60----DI0B01-----------------------
  1358. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GETDTM"
  1359.     DI = 0B01h
  1360.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1361.         DWORD    pointer to ???
  1362. Return: ???
  1363.     STACK unchanged
  1364. --------b-60----DI0B02-----------------------
  1365. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SETDTM"
  1366.     DI = 0B02h
  1367.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1368.         DWORD    pointer to ???
  1369. Return: ???
  1370.     STACK unchanged
  1371. --------b-60----DI0B03-----------------------
  1372. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_XALARM"
  1373.     DI = 0B03h
  1374.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1375.         WORD    ???
  1376. Return: ???
  1377.     STACK unchanged
  1378. --------b-60----DI0B04-----------------------
  1379. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_ALARM"
  1380.     DI = 0B04h
  1381.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1382.         DWORD    pointer to alarm record???
  1383.         WORD    ???
  1384. Return: ???
  1385.     STACK unchanged
  1386.  
  1387. Format of alarm record:
  1388. Offset    Size    Description
  1389.  00h    BYTE    hour
  1390.  01h    BYTE    minute
  1391.  02h    BYTE    second
  1392.  03h    BYTE    unused padding
  1393.  04h    WORD    rescheduling interval, in seconds
  1394.  06h    BYTE    are seconds significant?
  1395.  07h    BYTE    alarm sound
  1396.  08h 40 BYTEs    message displayed when alarm activates
  1397.  30h    BYTE    task ID of owner
  1398.  31h    BYTE    application's own use for sub-class
  1399.  32h  4 BYTEs    application's own use for private data
  1400. --------b-60----DI0B05-----------------------
  1401. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_SW"
  1402.     DI = 0B05h
  1403.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1404.         DWORD    pointer to ???
  1405. Return: ???
  1406.     STACK unchanged
  1407. --------b-60----DI0B06-----------------------
  1408. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SW"
  1409.     DI = 0B06h
  1410.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1411.         DWORD    pointer to ???
  1412.         DWORD    pointer to ???
  1413.         DWORD    pointer to ???
  1414. Return: ???
  1415.     STACK unchanged
  1416. --------b-60----DI0B07-----------------------
  1417. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_SW"
  1418.     DI = 0B07h
  1419.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1420.         DWORD    pointer to ???
  1421. Return: ???
  1422.     STACK unchanged
  1423. --------b-60----DI0B08-----------------------
  1424. INT 60 u - HP 95LX System Manager - "M_TELLTIME" - DISPLAY TIMESTAMP
  1425.     DI = 0B08h
  1426.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1427.         WORD    timestamp format (see below)
  1428.         WORD    row (-3 is topmost, 0 is first non-reserved line)
  1429.         WORD    column
  1430. Return: ???
  1431.     STACK unchanged
  1432.  
  1433. Bitfields for timestamp format:
  1434.  bits 1-0  timestamp components
  1435.     00 date only
  1436.     01 time only
  1437.     10 date and time
  1438.     11 day and date
  1439.  bit 4    supply am/pm
  1440.  bit 5    supply seconds
  1441.  bit 6    show year
  1442.  bit 7    four-digit year
  1443. --------b-60----DI0B09-----------------------
  1444. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SETTINGS"
  1445.     DI = 0B09h
  1446.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1447.         DWORD    pointer to ???
  1448.         DWORD    pointer to ???
  1449. Return: ???
  1450.     STACK unchanged
  1451. SeeAlso: INT 60/DI=0B0Ah,INT 60/DI=0B0Fh
  1452.  
  1453. Format of system settings:
  1454. Offset    Size    Description
  1455.  00h    WORD    country code
  1456.  02h    WORD    speaker volume (00h-03h or FFh for off)
  1457.  04h    WORD    contrast level (00h-0Fh)
  1458.  06h    WORD    week start (00h Sunday, 01h Monday)
  1459.  08h    WORD    punctuation format
  1460.         code    decimal arg    thousands
  1461.         00h    .    ,    ,
  1462.         01h    ,    .    .
  1463.         02h    .    ;    ;
  1464.         03h    ,    ;    .
  1465.         04h    .    ,    " "
  1466.         05h    ,    .    " "
  1467.         06h    .    ;    " "
  1468.         07h    ,    ;    " "
  1469.  0Ah    WORD    two-character language code (only 5355h = "US" byte-swapped)
  1470.  0Ch    WORD    current date format (see below)
  1471.  0Eh    WORD    current time format (see below)
  1472.  10h    WORD    collating sequence
  1473.         00h numbers first, 01h letters first, 02h ASCII
  1474.  12h 80 BYTEs    name of picture file
  1475.  62h 30 BYTEs    name
  1476.  80h 30 BYTEs    title
  1477.  9Eh 28 BYTEs    company name
  1478.  BAh    WORD    number of languages
  1479.  BCh  6 BYTEs    available languages
  1480.  C2h 66 BYTEs    language menu
  1481. 104h  2 BYTEs    ASCIZ date separator
  1482. 106h  2 BYTEs    ASCIZ time separator
  1483. 108h    BYTE    date order
  1484. 109h    BYTE    use 24 hour time?
  1485. 10Ah 16 BYTEs    currency string
  1486. 11Ah    WORD    currency string position (00h prefix, 01h suffix)
  1487. 11Ch    WORD    keyboard (see below)
  1488. 11Eh    WORD    printer baud rate
  1489.         00h 300, 01h 1200, 02h 2400, 03h 4800, 04h 9600, 05h 19200
  1490. 120h    WORD    printer driver code
  1491.         00h Epson FX80, 01h HP Laserjet, 02h IBM ProPrinter
  1492. 122h    WORD    printer interface (00h COM1, 01h COM2, 02h IR, 03h LPT1)
  1493. 124h    WORD    system manager interrupt (60h by default)
  1494. 126h    WORD    code page (01h CP850, 02h CP437)
  1495. 128h    WORD    active exit key
  1496. 12Ah    WORD    active menu key
  1497. 12Ch    WORD    active CHAR key toggle
  1498. 12Eh  6 BYTEs    alarm
  1499.  
  1500. Values for current date format:
  1501.  00h    dd-mmm-yy
  1502.  01h    dd-mmm
  1503.  02h    mmm-yy
  1504.  03h    mm/dd/yy
  1505.  04h    dd/mm/yy
  1506.  05h    dd.mm.yy
  1507.  06h    yy-mm-dd
  1508.  07h    mm/dd
  1509.  08h    dd/mm
  1510.  09h    dd.mm
  1511.  0Ah    mm-dd
  1512.  
  1513. Values for current time format:
  1514.  00h    HH:MM:SS am/pm
  1515.  01h    HH:MM am/pm
  1516.  02h    HH:MM:SS
  1517.  03h    HH.MM.SS
  1518.  04h    HH,MM,SS
  1519.  05h    HHhMMmSSs
  1520.  06h    HH:MM
  1521.  07h    HH.MM
  1522.  08h    HH,MM
  1523.  09h    HHhMMm
  1524.  
  1525. Values for keyboard:
  1526.  0001h    Belgium
  1527.  0002h    French Canadian
  1528.  0004h    Denmark
  1529.  0008h    Finland
  1530.  0010h    French
  1531.  0020h    Finland
  1532.  0040h    Italy
  1533.  0080h    Netherlands
  1534.  0100h    Norway
  1535.  0200h    Portugal
  1536.  0400h    Spain
  1537.  0800h    Sweden
  1538.  1000h    Swiss French
  1539.  2000h    Swiss German
  1540.  4000h    United Kingdom
  1541.  8000h    USA
  1542. --------b-60----DI0B0A-----------------------
  1543. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SET_SETTINGS"
  1544.     DI = 0B0Ah
  1545.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1546.         DWORD    pointer to ???
  1547.         DWORD    pointer to ???
  1548. Return: ???
  1549.     STACK unchanged
  1550. SeeAlso: INT 60/DI=0B09h
  1551. --------b-60----DI0B0B-----------------------
  1552. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_TIMER"
  1553.     DI = 0B0Bh
  1554.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1555.         DWORD    pointer to ???
  1556. Return: ???
  1557.     STACK unchanged
  1558. SeeAlso: INT 60/DI=0B0Ch,INT 60/DI=0B0Dh
  1559. --------b-60----DI0B0C-----------------------
  1560. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_TIMER"
  1561.     DI = 0B0Ch
  1562.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1563.         DWORD    pointer to ???
  1564. Return: ???
  1565.     STACK unchanged
  1566. SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Dh
  1567. --------b-60----DI0B0D-----------------------
  1568. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_TIMER"
  1569.     DI = 0B0Dh
  1570.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1571.         DWORD    pointer to ???
  1572.         DWORD    pointer to ???
  1573.         DWORD    pointer to ???
  1574. Return: ???
  1575.     STACK unchanged
  1576. SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Ch
  1577. --------b-60----DI0B0E-----------------------
  1578. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_TELL_ANYTIME"
  1579.     DI = 0B0Eh
  1580.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1581.         WORD    ???
  1582.         WORD    ???
  1583.         WORD    ???
  1584.         DWORD    pointer to ???
  1585.         DWORD    pointer to ???
  1586. Return: DX:AX -> ???
  1587.     STACK unchanged
  1588. --------b-60----DI0B0F-----------------------
  1589. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVCE "M_GET_SETTINGS_ADDR"
  1590.     DI = 0B0Fh
  1591.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1592. Return: DX:AX -> system settings record (see INT 60/DI=0B09h)
  1593.     STACK unchanged
  1594. SeeAlso: INT 60/DI=0B09h
  1595. --------b-60----DI0B10-----------------------
  1596. INT 60 u - HP 95LX System Manager - PARSE DATE SPECIFICATION
  1597.     DI = 0B10h
  1598.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1599.         WORD    ???
  1600.         DWORD    pointer to ???
  1601.         DWORD    pointer to ???
  1602. Return: ???
  1603.     STACK unchanged
  1604. --------b-60----DI0B11-----------------------
  1605. INT 60 u - HP 95LX System Manager - PARSE TIME SPECIFICATION
  1606.     DI = 0B11h
  1607.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1608.         WORD    ???
  1609.         DWORD    pointer to ???
  1610.         DWORD    pointer to ???
  1611. Return: ???
  1612.     STACK unchanged
  1613. --------b-60----DI0B12-----------------------
  1614. INT 60 u - HP 95LX System Manager - SET DATE PARSING RULE
  1615.     DI = 0B12h
  1616.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1617.         WORD    new parsing rule (see below)
  1618. Return: ???
  1619.     STACK unchanged
  1620. SeeAlso: INT 60/DI=0B13h
  1621.  
  1622. Values for new parsing rule:
  1623.  01h    day-month-year
  1624.  02h    month-day-year
  1625.  03h    year-month-day
  1626.  04h    "DMYO"
  1627.  05h    "MDYO"
  1628.  OR with 08h to get any year
  1629. --------b-60----DI0B13-----------------------
  1630. INT 60 u - HP 95LX System Manager - SET TIME PARSING RULE
  1631.     DI = 0B13h
  1632.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1633.         WORD    new parsing rule (see below)
  1634. Return: ???
  1635.     STACK unchanged
  1636. SeeAlso: INT 60/DI=0B12h
  1637.  
  1638. Values for new parsing rule:
  1639.  01h    HH:MM:SS (am/pm)
  1640.  02h    HH:MM:SS (24hr)
  1641.  03h    HHMM:SS (24hr)
  1642.  04h    HH:MM:SS.hh (24hr)
  1643.  05h    HH:MM (am/pm)
  1644.  06h    HH:MM (24hr)
  1645.  07h    HHMM (24hr)
  1646. --------b-60----DI0B14-----------------------
  1647. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_POST_TIME"
  1648.     DI = 0B14h
  1649.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1650. Return: ???
  1651.     STACK unchanged
  1652. --------b-60----DI0B15-----------------------
  1653. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DAY_TRIGGER"
  1654.     DI = 0B15h
  1655.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1656.         WORD    ???
  1657. Return: ???
  1658.     STACK unchanged
  1659. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  1660. --------b-60----DI0C00-----------------------
  1661. INT 60 u - HP 95LX System Manager - OPEN PRINTER
  1662.     DI = 0C00h
  1663.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1664. Return: ???
  1665.     STACK unchanged
  1666. SeeAlso: INT 60/DI=0C01h,INT 60/DI=0C02h,INT 60/DI=0C03h
  1667. --------b-60----DI0C01-----------------------
  1668. INT 60 u - HP 95LX System Manager - CLOSE PRINTER
  1669.     DI = 0C01h
  1670.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1671. Return: ???
  1672.     STACK unchanged
  1673. Note:    relinquishes control of printer
  1674. SeeAlso: INT 60/DI=0C00h
  1675. --------b-60----DI0C02-----------------------
  1676. INT 60 u - HP 95LX System Manager - WRITE TO PRINTER
  1677.     DI = 0C02h
  1678.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1679.         DWORD    pointer to data to be written
  1680.         WORD    length of data
  1681. Return: ???
  1682.     STACK unchanged
  1683. SeeAlso: INT 60/DI=0C00h
  1684. --------b-60----DI0C03-----------------------
  1685. INT 60 u - HP 95LX System Manager - INITIALIZE PRINTER
  1686.     DI = 0C03h
  1687.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1688. Return: ???
  1689.     STACK unchanged
  1690. SeeAlso: INT 60/DI=0C00h
  1691. --------b-60----DI0C04-----------------------
  1692. INT 60 u - HP 95LX System Manager - "M_TRANS_PRINTER"
  1693.     DI = 0C04h
  1694.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1695.         WORD    ???
  1696.         DWORD    pointer to ???
  1697. Return: ???
  1698.     STACK unchanged
  1699. --------b-60----DI0C05-----------------------
  1700. INT 60 u - HP 95LX System Manager - "M_FALL_PRINTER"
  1701.     DI = 0C05h
  1702.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1703.         WORD    ???
  1704.         DWORD    pointer to ???
  1705. Return: ???
  1706.     STACK unchanged
  1707. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  1708. --------b-60----DI0E00-----------------------
  1709. INT 60 u - HP 95LX System Manager - COMMUNICATIONS SERVICE "M_COMM_INIT"
  1710.     DI = 0E00h
  1711.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1712.         DWORD    pointer to ???
  1713. Return: ???
  1714.     STACK unchanged
  1715. SeeAlso: INT 60/DI=0E01h,INT 60/DI=0E02h
  1716.  
  1717. Values for error code:
  1718.  0000h    successful
  1719.  FFF1h    "E_BUSY"
  1720.  FFF2h    timeout
  1721.  FFF3h    framing error
  1722.  FFF4h    parity error
  1723.  FFF5h    overrun error
  1724.  FFF6h    "E_EMPTY"
  1725.  FFF7h    "E_CONECT"
  1726.  FFF8h    not open
  1727.  FFF9h    out of memory
  1728.  FFFAh    buffer overflow
  1729.  FFFBh    "E_NOFIT"
  1730.  FFFCh    unsupported
  1731.  FFFDh    "E_IVOPR"
  1732.  FFFEh    "E_IVCHN"
  1733.  FFFFh    "E_REOPEN"
  1734. --------b-60----DI0E01-----------------------
  1735. INT 60 u - HP 95LX System Manager - OPEN COMMUNICATIONS CHANNEL
  1736.     DI = 0E01h
  1737.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1738.         DWORD    pointer to WORD buffer for comm channel handle
  1739.         WORD    communications line number (01h-04h)
  1740. Return: ???
  1741.     STACK unchanged
  1742. SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E02h
  1743. --------b-60----DI0E02-----------------------
  1744. INT 60 u - HP 95LX System Manager - CLOSE COMMUNICATIONS CHANNEL
  1745.     DI = 0E02h
  1746.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1747.         WORD    comm channel handle
  1748. Return: ???
  1749.     STACK unchanged
  1750. SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E01h
  1751. --------b-60----DI0E03-----------------------
  1752. INT 60 u - HP 95LX System Manager - "M_COMM_GETMDM"
  1753.     DI = 0E03h
  1754.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1755.         WORD    ???
  1756. Return: ???
  1757.     STACK unchanged
  1758. --------b-60----DI0E04-----------------------
  1759. INT 60 u - HP 95LX System Manager - "M_COMM_ANSWER"
  1760.     DI = 0E04h
  1761.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1762.         WORD    ???
  1763.         WORD    ???
  1764. Return: ???
  1765.     STACK unchanged
  1766. --------b-60----DI0E05-----------------------
  1767. INT 60 u - HP 95LX System Manager - "M_COMM_DIAL"
  1768.     DI = 0E05h
  1769.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1770.         WORD    ???
  1771.         DWORD    pointer to ???
  1772. Return: ???
  1773.     STACK unchanged
  1774. --------b-60----DI0E06-----------------------
  1775. INT 60 u - HP 95LX System Manager - RESET COMMUNICATIONS CHANNEL
  1776.     DI = 0E06h
  1777.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1778.         WORD    comm channel handle
  1779.         WORD    reset options (see below)
  1780. Return: ???
  1781.     STACK unchanged
  1782.  
  1783. Bitfields for reset options:
  1784.  bit 0    reset line
  1785.  bit 1    flush transmit buffer
  1786.  bit 2    flush receive buffer
  1787.  bit 3    reset modem
  1788.  bit 4    reset receiver's ^S state
  1789.  bit 5    reset transmitter's ^S state
  1790. --------b-60----DI0E07-----------------------
  1791. INT 60 u - HP 95LX System Manager - "M_COMM_HANGUP"
  1792.     DI = 0E07h
  1793.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1794.         WORD    ???
  1795. Return: ???
  1796.     STACK unchanged
  1797. --------b-60----DI0E08-----------------------
  1798. INT 60 u - HP 95LX System Manager - SEND DATA OVER COMM CHANNEL
  1799.     DI = 0E08h
  1800.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1801.         WORD    comm channel handle
  1802.         DWORD    pointer to data to be sent
  1803.         WORD    option flags
  1804.             bit 0: send partial buffer
  1805.             bit 1: turn on receiver after sending
  1806.         DWORD    pointer to WORD containing length of data to be sent
  1807. Return: length WORD updated to contain number of bytes actually sent???
  1808.     STACK unchanged
  1809. SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
  1810. --------b-60----DI0E09-----------------------
  1811. INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL TRANSMIT QUEUE
  1812.     DI = 0E09h
  1813.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1814.         WORD    ???
  1815.         DWORD    pointer to ??? WORD
  1816.         DWORD    pointer to ??? WORD
  1817. Return: ???
  1818.     STACK unchanged
  1819. SeeAlso: INT 60/DI=0E0Ah
  1820. --------b-60----DI0E0A-----------------------
  1821. INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL RECEIVE QUEUE
  1822.     DI = 0E0Ah
  1823.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1824.         WORD    comm channel handle
  1825.         DWORD    pointer to WORD to get receive buffer size
  1826.         DWORD    pointer to WORD to get free bytes in receive buffer
  1827. Return: ???
  1828.     STACK unchanged
  1829. SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
  1830. --------b-60----DI0E0B-----------------------
  1831. INT 60 u - HP 95LX System Manager - RECEIVE DATA FROM COMM CHANNEL
  1832.     DI = 0E0Bh
  1833.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1834.         WORD    comm channel handle
  1835.         DWORD    pointer to data buffer
  1836.         DWORD    pointer to WORD (input) length of data buffer
  1837.                     (output) number of bytes received
  1838. Return: ???
  1839.     STACK unchanged
  1840. SeeAlso: INT 60/DI=0E08h,INT 60/DI=0E0Ah
  1841. --------b-60----DI0E0C-----------------------
  1842. INT 60 u - HP 95LX System Manager - "M_COMM_HAZCMD"
  1843.     DI = 0E0Ch
  1844.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1845.         WORD    ???
  1846.         DWORD    pointer to ???
  1847.         WORD    ???
  1848. Return: ???
  1849.     STACK unchanged
  1850. --------b-60----DI0E0D-----------------------
  1851. INT 60 u - HP 95LX System Manager - "M_COMM_COMAND"
  1852.     DI = 0E0Dh
  1853.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1854.         WORD    ???
  1855.         DWORD    pointer to ???
  1856.         WORD    ???
  1857. Return: ???
  1858.     STACK unchanged
  1859. --------b-60----DI0E0E-----------------------
  1860. INT 60 u - HP 95LX System Manager - "M_COMM_BREAK"
  1861.     DI = 0E0Eh
  1862.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1863.         WORD    ???
  1864.         WORD    ???
  1865. Return: ???
  1866.     STACK unchanged
  1867. --------b-60----DI0E0F-----------------------
  1868. INT 60 u - HP 95LX System Manager - "M_COMM_FRCXON"
  1869.     DI = 0E0Fh
  1870.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1871.         WORD    ???
  1872. Return: ???
  1873.     STACK unchanged
  1874. --------b-60----DI0E10-----------------------
  1875. INT 60 u - HP 95LX System Manager - "M_COMM_FRCXOF"
  1876.     DI = 0E10h
  1877.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1878.         WORD    ???
  1879. Return: ???
  1880.     STACK unchanged
  1881. --------b-60----DI0E11-----------------------
  1882. INT 60 u - HP 95LX System Manager - "M_COMM_SETDTR"
  1883.     DI = 0E11h
  1884.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1885.         WORD    ???
  1886.         WORD    ???
  1887. Return: ???
  1888.     STACK unchanged
  1889. --------b-60----DI0E12-----------------------
  1890. INT 60 u - HP 95LX System Manager - "M_COMM_XMITNG"
  1891.     DI = 0E12h
  1892.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1893.         WORD    ???
  1894. Return: ???
  1895.     STACK unchanged
  1896. --------b-60----DI0E13-----------------------
  1897. INT 60 u - HP 95LX System Manager - "M_COMM_STATUS"
  1898.     DI = 0E13h
  1899.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1900.         WORD    ???
  1901. Return: ???
  1902.     STACK unchanged
  1903. --------b-60----DI0E14-----------------------
  1904. INT 60 u - HP 95LX System Manager - SET COMMUNICATIONS SETTINGS
  1905.     DI = 0E14h
  1906.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1907.         WORD    comm channel handle
  1908.         DWORD    pointer to comm settings (see below)
  1909. Return: ???
  1910.     STACK unchanged
  1911. SeeAlso: INT 60/DI=0E15h
  1912.  
  1913. Format of comm settings:
  1914. Offset    Size    Description
  1915.  00h    BYTE    dial type ('T' tone, 'P' pulse)
  1916.  01h    WORD    baud rate divisor (115200/baud_rate)
  1917.  03h    BYTE    parity (00h none, 08h odd, 18h even, 28h mark, 38h space)
  1918.  04h    BYTE    stop bits (00h one, 04h two)
  1919.  05h    BYTE    data bits - 5
  1920.  06h    BYTE    software handshake
  1921.         01h none, 02h XOFF/XON, 04h XOFF/any, 08h ENQ/ACK
  1922.  07h    BYTE    infrared (01h off, 02h on)
  1923.  08h    BYTE    duplex (01h half, 02h full)
  1924.  09h    BYTE    echo (01h echo, 02h no echo)
  1925. --------b-60----DI0E15-----------------------
  1926. INT 60 u - HP 95LX System Manager - GET COMMUNICATIONS SETTINGS
  1927.     DI = 0E15h
  1928.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1929.         WORD    ???
  1930.         DWORD    pointer to buffer for settings (see INT 60/DI=0E14h)
  1931. Return: ???
  1932.     STACK unchanged
  1933. SeeAlso: INT 60/DI=0E14h
  1934. --------b-60----DI0E16-----------------------
  1935. INT 60 u - HP 95LX System Manager - "M_COMM_CNFGUR"
  1936.     DI = 0E16h
  1937.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1938.         WORD    ???
  1939.         WORD    ???
  1940.         WORD    ???
  1941.         WORD    ???
  1942.         WORD    ???
  1943. Return: ???
  1944.     STACK unchanged
  1945. --------b-60----DI0E17-----------------------
  1946. INT 60 u - HP 95LX System Manager - "M_COMM_QRYERR"
  1947.     DI = 0E17h
  1948.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1949.         WORD    ???
  1950. Return: ???
  1951.     STACK unchanged
  1952. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  1953. --------b-60----DI0F00-----------------------
  1954. INT 60 u - HP 95LX System Manager - "M_ERRMSG"
  1955.     DI = 0F00h
  1956.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1957.         WORD    ???
  1958.         DWORD    pointer to ???
  1959.         WORD    ???
  1960.         DWORD    pointer to ???
  1961. Return: ???
  1962.     STACK unchanged
  1963. --------b-60----DI0F01-----------------------
  1964. INT 60 u - HP 95LX System Manager - DRAW STANDARD TITLE BOX
  1965.     DI = 0F01h
  1966.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1967.         DWORD    pointer to ASCIZ title string
  1968. Return: ???
  1969.     STACK unchanged
  1970. --------b-60----DI0F02-----------------------
  1971. INT 60 u - HP 95LX System Manager - "SHOWNAME"
  1972.     DI = 0F02h
  1973.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1974.         DWORD    pointer to ???
  1975. Return: ???
  1976.     STACK unchanged
  1977. --------b-60----DI0F03-----------------------
  1978. INT 60 u - HP 95LX System Manager - DISPLAY TWO-LINE MESSAGE BOX
  1979.     DI = 0F03h
  1980.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1981.         DWORD    pointer to first line of message
  1982.         WORD    length of first line
  1983.         DWORD    pointer to second line of message
  1984.         WORD    length of second line
  1985. Return: ???
  1986.     STACK unchanged
  1987. SeeAlso: INT 60/DI=0300h,INT 60/DI=0F04h,INT 60/DI=0F09h
  1988. --------b-60----DI0F04-----------------------
  1989. INT 60 u - HP 95LX System Manager - REMOVE MESSAGE BOX
  1990.     DI = 0F04h
  1991.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1992. Return: ???
  1993.     STACK unchanged
  1994. SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F09h
  1995. --------b-60----DI0F05-----------------------
  1996. INT 60 u - HP 95LX System Manager - "M_COM_TIMER_ADDR"
  1997.     DI = 0F05h
  1998.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  1999. Return: DX:AX -> ???
  2000.     STACK unchanged
  2001. --------b-60----DI0F06-----------------------
  2002. INT 60 u - HP 95LX System Manager - "M_COM_TIMER_COUNT_ADDR"
  2003.     DI = 0F06h
  2004.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2005. Return: DX:AX -> ???
  2006.     STACK unchanged
  2007. --------b-60----DI0F07-----------------------
  2008. INT 60 u - HP 95LX System Manager - "M_SYS_RSRC_ADDR"
  2009.     DI = 0F07h
  2010.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2011. Return: DX:AX -> ???
  2012.     STACK unchanged
  2013. --------b-60----DI0F08-----------------------
  2014. INT 60 u - HP 95LX System Manager - "M_BIOS_OUTSTR"
  2015.     DI = 0F08h
  2016.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2017.         ???
  2018. Return: ???
  2019.     STACK unchanged
  2020. --------b-60----DI0F09-----------------------
  2021. INT 60 u - HP 95LX System Manager - DISPLAY THREE-LINE MESSAGE BOX
  2022.     DI = 0F09h
  2023.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2024.         DWORD    pointer to first line of message
  2025.         WORD    length of first line
  2026.         DWORD    pointer to second line of message
  2027.         WORD    length of second line
  2028.         DWORD    pointer to third line of message
  2029.         WORD    length of third line
  2030. Return: ???
  2031.     STACK unchanged
  2032. SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F04h
  2033. --------b-60----DI0F0A-----------------------
  2034. INT 60 u - HP 95LX System Manager - DISABLE MACROS
  2035.     DI = 0F0Ah
  2036.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2037. Return: ???
  2038.     STACK unchanged
  2039. SeeAlso: INT 60/DI=0F0Bh
  2040. --------b-60----DI0F0B-----------------------
  2041. INT 60 u - HP 95LX System Manager - ENABLE MACROS
  2042.     DI = 0F0Bh
  2043.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2044. Return: ???
  2045.     STACK unchanged
  2046. SeeAlso: INT 60/DI=0F0Ah
  2047. --------b-60----DI0F0C-----------------------
  2048. INT 60 u - HP 95LX System Manager - "M_DATE_TIME_SEPS"
  2049.     DI = 0F0Ch
  2050.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2051.         ???
  2052. Return: ???
  2053.     STACK unchanged
  2054. --------b-60----DI0F0D-----------------------
  2055. INT 60 u - HP 95LX System Manager - "M_FORM_FT"
  2056.     DI = 0F0Dh
  2057.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2058.         DWORD    pointer to ???
  2059. Return: DX:AX -> ???
  2060.     STACK unchanged
  2061. --------b-60----DI0F0E-----------------------
  2062. INT 60 u - HP 95LX System Manager - "M_RAM_IV_INFO"
  2063.     DI = 0F0Eh
  2064.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2065.         DWORD    pointer to ???
  2066. Return: DX:AX -> ???
  2067.     STACK unchanged
  2068. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2069. --------b-60----DI1005-----------------------
  2070. INT 60 u - HP 95LX System Manager - "M_DIRTY_SYNC" - FORCE SCREEN UPDATE
  2071.     DI = 1005h
  2072.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2073. Return: ???
  2074.     STACK unchanged
  2075. SeeAlso: INT 10/AH=FFh,INT 60/DI=0300h,INT 60/DI=0301h
  2076. --------b-60----DI1200-----------------------
  2077. INT 60 u - HP 95LX System Manager - RESOURCE SERVICE "MAP_RESOURCE_FILE"
  2078.     DI = 1200h
  2079.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2080.         DWORD    pointer to ???
  2081. Return: ???
  2082.     STACK unchanged
  2083. --------b-60----DI1201-----------------------
  2084. INT 60 u - HP 95LX System Manager - "GET_RESOURCE_PTR"
  2085.     DI = 1201h
  2086.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2087.         WORD    ???
  2088. Return: DX:AX -> ???
  2089.     STACK unchanged
  2090. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2091. --------b-60----DI1202-----------------------
  2092. INT 60 u - HP 95LX System Manager - "GET_RSRC_TAB_PTR"
  2093.     DI = 1202h
  2094.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2095. Return: DX:AX -> ???
  2096.     STACK unchanged
  2097. --------b-60----DI1203-----------------------
  2098. INT 60 u - HP 95LX System Manager - "INIT_SYSGMR_RSRCS"
  2099.     DI = 1203h
  2100.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2101. Return: ???
  2102.     STACK unchanged
  2103. --------b-60----DI1300-----------------------
  2104. INT 60 u - HP 95LX System Manager - INITIALIZE HELP SYSTEM
  2105.     DI = 1300h
  2106.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2107.         DWORD    pointer to ???
  2108.         DWORD    pointer to ???
  2109.         WORD    ???
  2110. Return: ???
  2111.     STACK unchanged
  2112. --------b-60----DI1301-----------------------
  2113. INT 60 u - HP 95LX System Manager - DISPLAY HELP
  2114.     DI = 1301h
  2115.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2116.         DWORD    pointer to ???
  2117. Return: ???
  2118.     STACK unchanged
  2119. --------b-60----DI1302-----------------------
  2120. INT 60 u - HP 95LX System Manager - "M_HELP_KEY"
  2121.     DI = 1302h
  2122.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2123.         DWORD    pointer to ???
  2124.         WORD    ???
  2125. Return: ???
  2126.     STACK unchanged
  2127. --------b-60----DI1303-----------------------
  2128. INT 60 u - HP 95LX System Manager - "M_HELP_TERM"
  2129.     DI = 1303h
  2130.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2131.         DWORD    pointer to ???
  2132. Return: ???
  2133.     STACK unchanged
  2134. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2135. --------b-60----DI1400-----------------------
  2136. INT 60 u - HP 95LX System Manager - "M_ColInit"
  2137.     DI = 1400h
  2138.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2139. Return: AX = ???
  2140.     STACK unchanged
  2141. --------b-60----DI1401-----------------------
  2142. INT 60 u - HP 95LX System Manager - "M_ColCpStr"
  2143.     DI = 1401h
  2144.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2145.         DWORD    pointer to ???
  2146.         WORD    ???
  2147.         DWORD    pointer to ???
  2148.         WORD    ???
  2149. Return: ???
  2150.     STACK unchanged
  2151. --------b-60----DI1402-----------------------
  2152. INT 60 u - HP 95LX System Manager - "M_ColLicsStr"
  2153.     DI = 1402h
  2154.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2155.         ???
  2156. Return: ???
  2157.     STACK unchanged
  2158. --------b-60----DI1403-----------------------
  2159. INT 60 u - HP 95LX System Manager - "M_ColLicsChar"
  2160.     DI = 1403h
  2161.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2162.         ???
  2163. Return: ???
  2164.     STACK unchanged
  2165. --------b-60----DI1404-----------------------
  2166. INT 60 u - HP 95LX System Manager - "M_ColToLower"
  2167.     DI = 1404h
  2168.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2169.         DWORD    pointer to ???
  2170.         WORD    ???
  2171. Return: ???
  2172.     STACK unchanged
  2173. --------b-60----DI1405-----------------------
  2174. INT 60 u - HP 95LX System Manager - "M_ColCpSearch"
  2175.     DI = 1405h
  2176.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2177.         DWORD    pointer to ???
  2178.         WORD    ???
  2179.         DWORD    pointer to ???
  2180.         WORD    ???
  2181.         WORD    ???
  2182. Return: ???
  2183.     STACK unchanged
  2184. --------b-60----DI1406-----------------------
  2185. INT 60 u - HP 95LX System Manager - "M_ColToUpper"
  2186.     DI = 1406h
  2187.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2188.         DWORD    pointer to ???
  2189.         WORD    ???
  2190. Return: ???
  2191.     STACK unchanged
  2192. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2193. --------b-60----DI1500-----------------------
  2194. INT 60 u - HP 95LX System Manager - "GrDispInit"
  2195.     DI = 1500h
  2196.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2197.         ???
  2198. Return: ???
  2199.     STACK unchanged
  2200. --------b-60----DI1501-----------------------
  2201. INT 60 u - HP 95LX System Manager - "GrDispClear"
  2202.     DI = 1501h
  2203.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2204.         ???
  2205. Return: ???
  2206.     STACK unchanged
  2207. --------b-60----DI1502-----------------------
  2208. INT 60 u - HP 95LX System Manager - "GrDispDot"
  2209.     DI = 1502h
  2210.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2211.         ???
  2212. Return: ???
  2213.     STACK unchanged
  2214. --------b-60----DI1503-----------------------
  2215. INT 60 u - HP 95LX System Manager - "GrDispDraw"
  2216.     DI = 1503h
  2217.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2218.         ???
  2219. Return: ???
  2220.     STACK unchanged
  2221. --------b-60----DI1504-----------------------
  2222. INT 60 u - HP 95LX System Manager - "GrDispFill"
  2223.     DI = 1504h
  2224.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2225.         ???
  2226. Return: ???
  2227.     STACK unchanged
  2228. --------b-60----DI1505-----------------------
  2229. INT 60 u - HP 95LX System Manager - "GrDispRead"
  2230.     DI = 1505h
  2231.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2232.         ???
  2233. Return: ???
  2234.     STACK unchanged
  2235. --------b-60----DI1506-----------------------
  2236. INT 60 u - HP 95LX System Manager - "GrDispString"
  2237.     DI = 1506h
  2238.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2239.         ???
  2240. Return: ???
  2241.     STACK unchanged
  2242. --------b-60----DI1507-----------------------
  2243. INT 60 u - HP 95LX System Manager - "GrDispPan"
  2244.     DI = 1507h
  2245.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2246.         ???
  2247. Return: ???
  2248.     STACK unchanged
  2249. --------b-60----DI1508-----------------------
  2250. INT 60 u - HP 95LX System Manager - "GrDispZoom"
  2251.     DI = 1508h
  2252.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2253.         ???
  2254. Return: ???
  2255.     STACK unchanged
  2256. --------b-60----DI1509-----------------------
  2257. INT 60 u - HP 95LX System Manager - "GrDispSave"
  2258.     DI = 1509h
  2259.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2260.         ???
  2261. Return: ???
  2262.     STACK unchanged
  2263. --------b-60----DI150A-----------------------
  2264. INT 60 u - HP 95LX System Manager - "GrDispRestore"
  2265.     DI = 150Ah
  2266.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2267.         ???
  2268. Return: ???
  2269.     STACK unchanged
  2270. --------b-60----DI150B-----------------------
  2271. INT 60 u - HP 95LX System Manager - "GrDispCorner"
  2272.     DI = 150Bh
  2273.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2274.         ???
  2275. Return: ???
  2276.     STACK unchanged
  2277. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2278. --------b-60----DI1604-----------------------
  2279. INT 60 u - HP 95LX System Manager - "CP_TO_LICS"
  2280.     DI = 1604h
  2281.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  2282.         ???
  2283. Return: ???
  2284.     STACK unchanged
  2285. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  2286. --------G-6000-------------------------------
  2287. INT 60 - SYS_PROF.EXE - PROFILER STATUS
  2288.     AH = 00h
  2289. Return: AX = 0000h    profiling is off
  2290.         otherwise profiling is on
  2291. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  2292. SeeAlso: AH=01h"SYS_PROF",02h"SYS_PROF"
  2293. --------G-6000-------------------------------
  2294. INT 60 - MDEBUG - GET STATUS
  2295.     AH = 00h
  2296.     DS:SI -> password or a null byte
  2297. Return: AX = return code
  2298.         FFFEh password is invalid
  2299.         FFFDh display mode is invalid
  2300.        else successful
  2301.         ES = value of the monitor register SE
  2302.         DI = value of the monitor register OF
  2303.         CH = monitor color
  2304.         CL = interpreter color
  2305.         BH = monitor start line
  2306.         BL = interpreter start line
  2307.         AH = makecode of the hotkey
  2308.         AL = ASCII code of the hotkey
  2309.         DL = status of special keys (only SHIFT, ALT, CTRL) for the
  2310.             hotkey (coded as for the keyboard flag at 0040h:0017h)
  2311.         DH = basic process number for the communication with drivers
  2312.             process number for the display driver, DH+1 = process
  2313.             number for the command driver(s)
  2314.     DS:SI -> MDEBUG identification table
  2315. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  2316.       Schemmer, including a memory monitor, an interpreter, and a
  2317.       disassembler
  2318. Notes:    MDEBUG uses INT 60 by default, but may be directed to any of INT 60
  2319.       through INT 67; the interrupt handler is preceded by the signature
  2320.       "USERINT" and is not chained
  2321.     if DS:SI points at a null byte, MDEBUG will prompt for a password if
  2322.       passwords are active; enough stack space must be provided for an
  2323.       INT 10h call (which MDEBUG uses while prompting for the password)
  2324. SeeAlso: AH=02h"MDEBUG"
  2325. Index:    hotkeys;MDEBUG
  2326.  
  2327. Format of MDEBUG identification table:
  2328. Offset    Size    Description
  2329.  -2    WORD    entry offset
  2330.  00h    WORD    CS of MDEBUG
  2331.  02h    DWORD    old INT 08h vector
  2332.  06h    DWORD    old INT 09h vector
  2333.  0Ah    DWORD    address INT 16h routine used by MDEBUG
  2334.  0Eh    BYTE    length of version string
  2335.  0Fh  N BYTEs    version string
  2336. --------G-6001-------------------------------
  2337. INT 60 - MDEBUG - GET ADDRESS OF THE HELP REGISTERS
  2338.     AH = 01h
  2339.     DS:SI -> password or a null byte
  2340. Return: AX = return code
  2341.         FFFEh password is invalid
  2342.         FFFDh display mode is invalid
  2343.        else successful
  2344.         ES:DI point to the help registers of MDEBUG
  2345.            ES:DI-02h  -> R0 (WORD)
  2346.            ES:DI      -> R1 (WORD)
  2347.            ES:DI+02h  -> R2 (WORD)
  2348.            ES:DI+04h  -> R3 (WORD)
  2349.            ...
  2350.            ES:DI+0Eh  -> R8 (WORD)
  2351. --------G-6001-------------------------------
  2352. INT 60 - SYS_PROF.EXE - TURN PROFILING OFF
  2353.     AH = 01h
  2354. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  2355. SeeAlso: AH=00h"SYS_PROF",02h"SYS_PROF"
  2356. --------N-6001FF-----------------------------
  2357. INT 60 - FTP Packet Driver - BASIC FUNC - GET DRIVER INFO
  2358.     AX = 01FFh
  2359.     BX = handle returned by function 02h
  2360. Return: CF set on error
  2361.         DH = error code (see below)
  2362.     CF clear if successful
  2363.         BX = version
  2364.         CH = network interface class (see below)
  2365.         DX = interface type (see below)
  2366.         CL = number
  2367.         DS:SI -> name
  2368.         AL = driver functions supported
  2369.         01h basic
  2370.         02h basic and extended
  2371.         05h basic and high-performance
  2372.         06h basic, high-performance, and extended
  2373.         FFh not installed
  2374. Note:    the handle in BX is optional for drivers written to v1.07 or later of
  2375.       the packet driver specification
  2376.  
  2377. Values for error code:
  2378.  01h "BAD_HANDLE"    invalid handle number
  2379.  02h "NO_CLASS"        no interfaces of the specified class found
  2380.  03h "NO_TYPE"        no interfaces of the specified type found
  2381.  04h "NO_NUMBER"    no interfaces of the specified number found
  2382.  05h "BAD_TYPE"        bad packet type
  2383.  06h "NO_MULTICAST"    interface does not support multicast messages
  2384.  07h "CANT_TERMINATE"    this packet driver cannot terminate
  2385.  08h "BAD_MODE"        invalid receiver mode
  2386.  09h "NO_SPACE"        insufficient space
  2387.  0Ah "TYPE_INUSE"    type accessed but never released
  2388.  0Bh "BAD_COMMAND"    bad command
  2389.  0Ch "CANT_SEND"    packet could not be sent
  2390.  0Dh "CANT_SET"        hardware address could not be changed
  2391.  0Eh "BAD_ADDRESS"    hardware address has a bad length or format
  2392.  0Fh "CANT_RESET"    could not reset interface
  2393.  
  2394. Values for Network Interface classes/types:
  2395.     Class 01h  Ethernet/IEEE 802.3
  2396.     01h 3COM 3C500/3C501
  2397.     02h 3COM 3C505
  2398.     03h MICOM-Interlan NI5010
  2399.     04h BICC Data Networks 4110
  2400.     05h BICC Data Networks 4117
  2401.     06h MICOM-Interlan NP600
  2402.     08h Ungermann-Bass PC-NIC
  2403.     09h Univation NC-516
  2404.     0Ah TRW PC-2000
  2405.     0Bh MICOM-Interlan NI5210
  2406.     0Ch 3COM 3C503
  2407.     0Dh 3COM 3C523
  2408.     0Eh Western Digital WD8003
  2409.     0Fh Spider Systems S4
  2410.     10h Torus Frame Level
  2411.     11h 10Net Communications
  2412.     12h Gateway PC-bus
  2413.     13h Gateway AT-bus
  2414.     14h Gateway MCA-bus
  2415.     15h IMC PCnic
  2416.     16h IMC PCnic II
  2417.     17h IMC PCnic 8-bit
  2418.     18h Tigan Communications
  2419.     19h Micromatic Research
  2420.     1Ah Clarkson "Multiplexor"
  2421.     1Bh D-Link 8-bit
  2422.     1Ch D-Link 16-bit
  2423.     1Dh D-Link PS/2
  2424.     1Eh Research Machines 8
  2425.     1Fh Research Machines 16
  2426.     20h Research Machines MCA
  2427.     21h Radix Microsystems EXM1 16-bit
  2428.     22h Interlan Ni9210
  2429.     23h Interlan Ni6510
  2430.     24h Vestra LANMASTER 16-bit
  2431.     25h Vestra LANMASTER 8-bit
  2432.     26h Allied Telesis PC/XT/AT
  2433.     27h Allied Telesis NEC PC-98
  2434.     28h Allied Telesis Fujitsu FMR
  2435.     29h Ungermann-Bass NIC/PS2
  2436.     2Ah Tiara LANCard/E AT
  2437.     2Bh Tiara LANCard/E MC
  2438.     2Ch Tiara LANCard/E TP
  2439.     2Dh Spider Communications SpiderComm 8
  2440.     2Eh Spider Communications SpiderComm 16
  2441.     2Fh AT&T Starlan NAU
  2442.     30h AT&T Starlan-10 NAU
  2443.     31h AT&T Ethernet NAU
  2444.     32h Intel smart card
  2445.     33h Xircom Packet Adapter
  2446.     34h Aquila Ethernet
  2447.     35h Novell NE1000
  2448.     36h Novell NE2000
  2449.     37h SMC PC-510
  2450.     38h AT&T Fiber NAU
  2451.     39h NDIS to Packet Driver adapter
  2452.     3Ah Racal-InterLan ES3210
  2453.     3Bh General Systems ISDN simulated Ethernet
  2454.     3Ch Hewlett-Packard
  2455.     3Dh IMC EtherNic-8
  2456.     3Eh IMC EtherNic-16
  2457.     3Fh IMC EtherNic-MCA
  2458.     40h NetWorth EtherNext
  2459.     41h Dataco Scanet
  2460.     42h DEC DEPCA
  2461.     43h C-Net
  2462.     44h Gandalf LANLine
  2463.     45h Apricot built-in
  2464.     46h David Systems Ether-T
  2465.     47h ODI to Packet Driver adapter
  2466.     48h AMD Am21110-16
  2467.     49h Intel ICD Network controller family
  2468.     4Ah Intel ICD PCL2
  2469.     4Bh Intel ICD PCL2A
  2470.     4Ch AT&T LANPacer
  2471.     4Dh AT&T LANPacer+
  2472.     4Eh AT&T EVB
  2473.     4Fh AT&T StarStation
  2474.     50h SLIP simulated ethernet
  2475.     51h Racal-Interlan NIA310
  2476.     52h Racal-Interlan NISE
  2477.     53h Racal-Interlan NISE30
  2478.     54h Racal-Interlan NI6610
  2479.     55h Ethernet over IP/UDP
  2480.     56h ICL EtherTeam 16
  2481.     57h David Systems
  2482.     58h NCR WaveLAN
  2483.     59h Thomas Contrad TC5045
  2484.     5Ah Russ Nelson's Parallel Port driver
  2485.     5Bh Intell EtherExpress 16
  2486.     5Ch IBMTOKEN
  2487.     5Dh Zenith Z-Note
  2488.     5Eh 3Com 3C509
  2489.     5Fh Mylex LNE390
  2490.     60h Madge Smart Ringnode
  2491.     61h Novell NE2100
  2492.     62h Allied Telesis 1500
  2493.     63h Allied Telesis 1700
  2494.     64h Fujitsu EtherCoupler
  2495.     Class 02h  ProNET-10
  2496.     01h Proteon p1300
  2497.     02h Proteon p1800
  2498.     Class 03h  IEEE 802.5/ProNet-4 (without expanded RIFs)
  2499.     01h IBM Token-Ring Adapter
  2500.     02h Proteon p1340
  2501.     03h Proteon p1344
  2502.     04h Gateway PC-bus
  2503.     05h Gateway AT-bus
  2504.     06h Gateway MCA-bus
  2505.     07h Madge board
  2506.     39h NDIS to Packet Driver adapter
  2507.     47h ODI to Packet Driver adapter
  2508.     Class 04h  Omninet
  2509.     Class 05h  Appletalk
  2510.     01h ATALK.SYS adapter
  2511.     Class 06h  Serial Line
  2512.     01h Clarkson 8250-SLIP
  2513.     02h Clarkson "Multiplexor"
  2514.     03h Eicon Technologies
  2515.     Class 07h  StarLAN (subsumed by Ethernet class)
  2516.     Class 08h  ARCnet
  2517.     01h Datapoint RIM
  2518.     Class 09h  AX.25
  2519.     01h Ottawa PI card
  2520.     02h Eicon Technologies
  2521.     Class 0Ah  KISS
  2522.     Class 0Bh  IEEE 802.3 with 802.2 headers
  2523.     types same as for class 01h
  2524.     Class 0Ch  FDDI with 802.2 headers
  2525.     01h Western Digital
  2526.     02h Frontier Technology
  2527.     Class 0Dh  Internet X.25
  2528.     01h Western Digital
  2529.     02h Frontier Technology
  2530.     03h Emerging Technologies
  2531.     04h The Software Forge
  2532.     05h Link Data Intelligent X.25
  2533.     06h Eicon Technologies
  2534.     Class 0Eh  N.T. LANSTAR (encapsulating DIX Ethernet)
  2535.     01h NT LANSTAR/8
  2536.     02h NT LANSTAR/MC
  2537.     Class 0Fh  SLFP (MIT serial specification)
  2538.     01h MERIT
  2539.     Class 10h  PPP (Point-to-Point Protocol)
  2540.     01h 8250/16550 UART
  2541.     02h Niwot Networks synch
  2542.     03h Eicon Technologies
  2543.     Class 11h  802.5 with expanded RIFs
  2544.     types same as for class 3
  2545.     Class 12h  reserved for LCP/NCPs
  2546. Note: class and type numbers are cleared through FTP Software
  2547. --------G-6002-------------------------------
  2548. INT 60 - MDEBUG - SET STATUS
  2549.     AH = 02h
  2550.     DS:SI -> password or a null byte
  2551.     ES = new value for the register SE
  2552.     DI = new value for the register OF
  2553.     CH = new monitor color if nonzero
  2554.     CL = new interpreter color if nonzero
  2555.     BH = new monitor start line if nonzero
  2556.     BL = new interpreter start line if nonzero
  2557.     AL = new ASCII code for the hotkey ('A'..'Z', 'a'..'z') if nonzero
  2558.     DL = new status of the special keys (SHIFT, ALT, CTRL) for the hotkey
  2559.         if nonzero
  2560.     DH = if nonzero, new basic process number for communication with the
  2561.         drivers (DH = multiplex number for the display driver,
  2562.         DH+1 = multiplex number for the command driver or drivers)
  2563. Return: AX = return code
  2564.         FFFFh call not allowed
  2565.         FFFEh password is invalid
  2566.         FFFDh display mode is invalid
  2567.         0000h successful, status changed
  2568.        else AL = error reasons (see below)
  2569. Note:    the values of the registers SE and OF are always changed, the other
  2570.       values are only changed if they are valid
  2571. SeeAlso: AH=00h"MDEBUG"
  2572. Index:    hotkeys;MDEBUG
  2573.  
  2574. Bitfields for error reasons:
  2575.  bit 0    invalid monitor start line
  2576.  bit 1    invalid interpreter start line
  2577.  bit 2    invalid hotkey
  2578.  bit 3    invalid process number
  2579.  bits 4-7 reserved
  2580. --------N-6002-------------------------------
  2581. INT 60 - FTP Packet Driver - BASIC FUNC - ACCESS TYPE
  2582.     AH = 02h
  2583.     AL = interface class
  2584.     BX = interface type
  2585.     DL = interface number
  2586.     DS:SI -> type
  2587.     CX = length of type (0000h for all packets)
  2588.     ES:DI -> receiver
  2589. Return: CF set on error
  2590.         DH = error code (see AX=01FFh)
  2591.     CF clear if successful
  2592.         AX = handle
  2593. SeeAlso: AH=03h"FTP"
  2594.  
  2595. Receiver is called with:
  2596.     AX = subfunction
  2597.         00h get packet buffer
  2598.         DX = lookahead length (v1.10+)
  2599.         DS:SI -> lookahead buffer if DX nonzero (v1.10+)
  2600.         DI = error flags (class dependent) (v1.10+)
  2601.         Return: ES:DI -> packet buffer
  2602.                 0000h:0000h means throw away packet
  2603.             CX = size of buffer (v1.10+), may be smaller than
  2604.                 incoming data
  2605.         01h copy completed
  2606.         DS:SI -> buffer
  2607.         CX = bytes actually copied (v1.10+)
  2608.     BX = handle
  2609.     CX = buffer length
  2610. when a packet is received
  2611. --------G-6002-------------------------------
  2612. INT 60 - SYS_PROF.EXE - TURN PROFILING ON
  2613.     AH = 02h
  2614. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  2615. SeeAlso: AH=00h"SYS_PROF",01h"SYS_PROF"
  2616. --------G-6003-------------------------------
  2617. INT 60 - MDEBUG - POP UP
  2618.     AH = 03h
  2619.     DS:SI -> password or a null byte
  2620.     ES -> new value for the register SE
  2621.     DI -> new value for the register OF
  2622. Return: AX = return code
  2623.         FFFFh call not allowed
  2624.         FFFEh password is invalid
  2625.         FFFDh display mode is invalid
  2626.        else successful
  2627. SeeAlso: AH=04h"MDEBUG"
  2628. --------N-6003-------------------------------
  2629. INT 60 - FTP Packet Driver - BASIC FUNC - RELEASE TYPE
  2630.     AH = 03h
  2631.     BX = handle
  2632. Return: CF set on error
  2633.        DH = error code (see AX=01FFh)
  2634.     CF clear if successful
  2635. SeeAlso: AH=02h"FTP"
  2636. --------G-6003-------------------------------
  2637. INT 60 - SYS_PROF.EXE - GET ADDRESS OF PROFILING TABLE
  2638.     AH = 03h
  2639. Return: ES:BX -> profiling table
  2640. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  2641. SeeAlso: AH=04h"SYS_PROF"
  2642. --------N-6004-------------------------------
  2643. INT 60 - FTP Packet Driver - BASIC FUNC - SEND PACKET
  2644.     AH = 04h
  2645.     DS:SI -> buffer
  2646.     CX = length
  2647. Return: CF set on error
  2648.         DH = error code (see AX=01FFh)
  2649.     CF clear if successful
  2650. Note:    the buffer may be modified immediately upon return from this call
  2651. SeeAlso: AH=0Bh
  2652. --------G-6004-------------------------------
  2653. INT 60 - MDEBUG - POP UP
  2654.     AH = 04h
  2655.     DS:SI -> password or a null byte
  2656. Return: AX = return code
  2657.         FFFFh call not allowed
  2658.         FFFEh password is invalid
  2659.         FFFDh display mode is invalid
  2660.        else successful
  2661. SeeAlso: AH=03h"MDEBUG",AH=07h"MDEBUG"
  2662. --------G-6004-------------------------------
  2663. INT 60 - SYS_PROF.EXE - CLEAR PROFILING TABLE
  2664.     AH = 04h
  2665. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  2666. SeeAlso: AH=03h"SYS_PROF"
  2667. --------N-6005-------------------------------
  2668. INT 60 - FTP Packet Driver - BASIC FUNC - TERMINATE DRIVER FOR HANDLE
  2669.     AH = 05h
  2670.     BX = handle (optional for v1.10+)
  2671. Return: CF set on error
  2672.        DH = error code (see AX=01FFh)
  2673.     CF clear if successful
  2674. --------G-6005-------------------------------
  2675. INT 60 - MDEBUG - GET AND SET MDEBUG FLAGS
  2676.     AH = 05h
  2677.     DS:SI -> password or a null byte
  2678.     BL = new value for the semaphor of MDEBUG
  2679.          00h  enable popup of MDEBUG
  2680.          else disable popup of MDEBUG
  2681. Return: AX = return code
  2682.         FFFEh password is invalid
  2683.         FFFDh display mode is invalid
  2684.        else successful
  2685.         BL = old value of the semaphor of MDEBUG
  2686.         BH = old value of the INT 08h semaphor
  2687.             (this semaphor is always reset after this function)
  2688. --------N-6006-------------------------------
  2689. INT 60 - FTP Packet Driver - BASIC FUNC - GET ADDRESS
  2690.     AH = 06h
  2691.     BX = handle (optional for v1.10+)
  2692.     ES:DI -> buffer
  2693.     CX = length
  2694. Return: CF set on error
  2695.         DH = error code (see AX=01FFh)
  2696.     CF clear if successful
  2697.         CX = length
  2698. Note:    copies the local net address associated with the handle into the buffer
  2699. --------G-6006-------------------------------
  2700. INT 60 - MDEBUG - GET PASSWORD STATUS
  2701.     AH = 06h
  2702. Return: AL = status
  2703.         00h password inactive
  2704.         01h password active
  2705. --------N-6007-------------------------------
  2706. INT 60 - FTP Packet Driver - BASIC FUNC - RESET INTERFACE
  2707.     AH = 07h
  2708.     BX = handle (optional for v1.10+)
  2709. Return: CF set on error
  2710.         DH = error code (see AX=01FFh)
  2711.     CF clear if successful
  2712. --------G-6007-------------------------------
  2713. INT 60 - MDEBUG v1.70+ - GET ACTIVE PART OF MDEBUG
  2714.     AH = 07h
  2715. Return: AL = active part for the next popup session of MDEBUG:
  2716.         bit 0: the next popup session will start in the interpreter rather
  2717.             than in the monitor
  2718.         bit 1: the next popup session will sart in the online-help
  2719. SeeAlso: AH=03h"MDEBUG",AH=04h"MDEBUG"
  2720. --------G-6008-------------------------------
  2721. INT 60 - MDEBUG - UNUSED
  2722.     AH = 08h-FFh
  2723. Return: AX = FFFCh
  2724. --------N-600A-------------------------------
  2725. INT 60 - FTP Packet Driver 1.09+ - HIGH-PERF FUNC - GET PARAMETERS
  2726.     AH = 0Ah
  2727. Return: CF set on error
  2728.         DH = error code (0Bh) (see AX=01FFh)
  2729.     CF clear if successful
  2730.         ES:DI -> parameter table (see below)
  2731.  
  2732. Format of parameter table:
  2733. Offset    Size    Description
  2734.  00h    BYTE    major revision of packet driver spec driver conforms to
  2735.  01h    BYTE    minor revision of packet driver spec
  2736.  02h    BYTE    length of this structure in bytes
  2737.  03h    BYTE    length of a MAC-layer address
  2738.  04h    WORD    maximum transfer unit, including MAC headers
  2739.  06h    WORD    buffer size for multicast addr
  2740.  08h    WORD    number of receive buffers (one less than back-to-back MTU rcvs)
  2741.  0Ah    WORD    number of transmit buffers
  2742.  0Ch    WORD    interrupt number to hook for post-EOI processing, 00h=none
  2743. --------N-600B-------------------------------
  2744. INT 60 - FTP Packet Driver 1.09 - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  2745.     AH = 0Bh
  2746.     DS:SI -> buffer
  2747.     CX = length of buffer
  2748.     ES:DI -> FAR function to call when buffer becomes available
  2749. Return: CF set on error
  2750.         DH = error code (0Bh,0Ch) (see AX=01FFh)
  2751.     CF clear if successful
  2752. Notes:    unlike function 04h, the buffer is not available for modification as
  2753.       soon as the call returns; the buffer may be queued by the driver and
  2754.       not processed until later
  2755.     this function has been dropped from v1.10+ of the specification and
  2756.       replaced by function 0Ch
  2757. SeeAlso: AH=04h"Packet Driver",AH=0Ch"Packet Driver"
  2758.  
  2759. Completion function called with:
  2760.     AX = result
  2761.         00h copy OK
  2762.         nonzero error
  2763.     ES:DI -> buffer passed to INT 60/AH=0Bh call
  2764. --------N-600C-------------------------------
  2765. INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  2766.     AH = 0Ch
  2767.     ES:DI -> pointer to IOCB
  2768. Return: CF set on error
  2769.         DH = error code (see AX=01FFh)
  2770.     CF clear if successful
  2771. SeeAlso: AH=04h"Packet Driver",AH=0Bh"Packet Driver"
  2772.  
  2773. Format of IOCB:
  2774. Offset    Size    Description
  2775.  00h    DWORD    pointer to buffer
  2776.  04h    WORD    length of buffer
  2777.  06h    BYTE    flags
  2778.         bit 0: packet driver is finished with IOCB
  2779.         bit 1: application requests upcall when driver completes
  2780.  07h    DWORD    function address for upcall
  2781.  0Bh  4 BYTEs    future gather write
  2782.  0Fh    BYTE    ???
  2783.  10h  8 BYTEs    private driver workspace
  2784.  
  2785. Completion function called with:
  2786.     ES:DI -> IOCB passed to INT 60/AH=0Ch
  2787. --------N-600C-------------------------------
  2788. INT 60 - Banyan VINES, 3com - GET STATION ADDRESS
  2789.     AH = 0Ch
  2790. Return: AL = status
  2791.         00h successful
  2792.         ES:SI -> 6-byte station address
  2793.         02h semaphore service is unavailable
  2794. --------N-600D-------------------------------
  2795. INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - DROP PACKET FROM QUEUE
  2796.     AH = 0Dh
  2797.     ES:DI -> IOCB
  2798. Return: CF set on error
  2799.         DH = error code (see AX=01FFh)
  2800.     CF clear if successful
  2801. SeeAlso: AH=0Ch"Packet Driver"
  2802. --------N-6011-------------------------------
  2803. INT 60 - 3com, 10NET, Banyan VINES - LOCK AND WAIT
  2804.     AH = 11h
  2805.     AL = drive number or 0
  2806.     DX = number of seconds to wait
  2807.     ES:SI = Ethernet address or 0
  2808.     DS:BX -> 31-byte ASCIZ semaphore name
  2809. Return: AL = status (see below)
  2810. SeeAlso: AH=12h,AH=13h
  2811.  
  2812. Values for status:
  2813.  00h    successful
  2814.  01h    timeout
  2815.  02h    server not responding
  2816.  03h    invalid semaphore name
  2817.  04h    semaphore list is full
  2818.  05h    invalid drive ID
  2819.  06h    invalid Ethernet address
  2820.  07h    not logged in
  2821.  08h    write to network failed
  2822.  09h    semaphore already logged for this CPU
  2823. --------N-6012-------------------------------
  2824. INT 60 - 3com, 10NET, Banyan VINES - LOCK
  2825.     AH = 12h
  2826.     AL = drive number or 00h
  2827.     ES:SI = Ethernet address or 0000h:0000h
  2828.     DS:BX -> 31-byte ASCIZ semaphore name
  2829. Return: AL = status (see also AH=11h)
  2830.         01h semaphore currently locked by another PC
  2831. Note:    unlike function 11h, this function returns immediately
  2832. SeeAlso: AH=11h,AH=13h
  2833. --------N-6013-------------------------------
  2834. INT 60 - 3com, 10NET, Banyan VINES - UNLOCK
  2835.     AH = 13h
  2836.     AL = drive number or 00h
  2837.     ES:SI = Ethernet address or 0000h:0000h
  2838.     DS:BX -> 31-byte ASCIZ semaphore name
  2839. Return: AL = status (see also AH=11h)
  2840.         01h semaphore not locked
  2841. SeeAlso: AH=11h,AH=12h
  2842. --------N-6014-------------------------------
  2843. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET RECEIVE MODE
  2844.     AH = 14h
  2845.     BX = handle (optional for v1.10+)
  2846.     CX = mode
  2847.         01h turn off receiver
  2848.         02h receive only packets sent to this interface
  2849.         03h mode 2 plus broadcast packets
  2850.         04h mode 3 plus limited multicast packets
  2851.         05h mode 3 plus all multicast packets
  2852.         06h all packets
  2853.         07h raw mode for serial line only (v1.10+)
  2854. Return: CF set on error
  2855.        DH = error code (01h,08h) (see AX=01FFh)
  2856.     CF clear if successful
  2857. SeeAlso: AH=15h
  2858. --------N-6015-------------------------------
  2859. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET RECEIVE MODE
  2860.     AH = 15h
  2861.     BX = handle (optional for v1.10+)
  2862. Return: CF set on error
  2863.         DH = error code (01h) (see AX=01FFh)
  2864.     CF clear if successful
  2865.         AX = mode
  2866. SeeAlso: AH=14h
  2867. --------N-6016-------------------------------
  2868. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET MULTICAST LIST
  2869.     AH = 16h
  2870.     ES:DI -> multicast list
  2871.     CX = length of list in bytes
  2872. Return: CF set on error
  2873.         DH = error code (06h,09h,0Eh) (see AX=01FFh)
  2874.     CF clear if successful
  2875. SeeAlso: AH=17h
  2876. --------N-6017-------------------------------
  2877. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET MULTICAST LIST
  2878.     AH = 17h
  2879. Return: CF set on error
  2880.         DH = error code (06h,09h) (see AX=01FFh)
  2881.     CF clear if successful
  2882.         ES:DI -> multicast addresses (do not modify)
  2883.         CX = bytes of multicast addresses currently in use
  2884. SeeAlso: AH=16h
  2885. --------N-6018-------------------------------
  2886. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET STATISTICS
  2887.     AH = 18h
  2888.     BX = handle (optional for v1.10+)
  2889. Return: CF set on error
  2890.         DH = error code (01h) (see AX=01FFh)
  2891.     CF clear if successful
  2892.         DS:SI -> statistics (see below)
  2893.  
  2894. Format of statistics:
  2895. Offset    Size    Description
  2896.  00h    DWORD    packets in
  2897.  04h    DWORD    packets out
  2898.  08h    DWORD    bytes in
  2899.  0Ch    DWORD    bytes out
  2900.  10h    DWORD    errors in
  2901.  14h    DWORD    errors out
  2902.  18h    DWORD    packets dropped
  2903. --------N-6019-------------------------------
  2904. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET NETWORK ADDRESS
  2905.     AH = 19h
  2906.     ES:DI -> address
  2907.     CX = length of address
  2908. Return: CF set on error
  2909.         DH = error code (0Dh,0Eh) (see AX=01FFh)
  2910.     CF clear if successful
  2911.         CX = length
  2912. --------N-601A-------------------------------
  2913. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - SEND RAW BYTES
  2914.     AH = 1Ah
  2915.     DS:SI -> buffer
  2916.     CX = length of buffer
  2917. Return: CF set on error
  2918.         DH = error code (see AX=01FFh)
  2919.     CF clear if successful
  2920. SeeAlso: AH=1Ch
  2921. --------N-601B-------------------------------
  2922. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FLUSH RAW BYTES RECEIVED
  2923.     AH = 1Bh
  2924. Return: CF set on error
  2925.         DH = error code (see AX=01FFh)
  2926.     CF clear if successful
  2927. SeeAlso: AH=1Ch
  2928. --------N-601C-------------------------------
  2929. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FETCH RAW BYTES RECEIVED
  2930.     AH = 1Ch
  2931.     DS:SI -> buffer
  2932.     CX = length of buffer
  2933.     DX = timeout in clock ticks
  2934. Return: CF set on error
  2935.         DH = error code (see AX=01FFh)
  2936.     CF clear if successful
  2937.         CX = number of bytes transferred to buffer
  2938. SeeAlso: AH=1Ah,AH=1Bh
  2939. --------a-60AD-------------------------------
  2940. INT 60 - AccessDOS - API
  2941.     AH = ADh
  2942.     AL = function
  2943.         E1h ???
  2944.         Return: AX = ???
  2945.         E2h get configuration
  2946.         Return: BX:AX -> configuration data
  2947. Program: AccessDOS is a public domain TSR developed at The Trace Research and
  2948.       Development Center which provides extensions for keyboard, mouse,
  2949.       and sound access by the visually, hearing, or motor-control
  2950.       impaired.
  2951. Note:    INT 60 is the default vector; AccessDOS will use the first 0000h:0000h
  2952.       vector in the range 60h through 66h.
  2953. --------N-60E9-------------------------------
  2954. INT 60 - FTP Packet Driver - Crynwr Software - AUTOSELECT TRANSCEIVER
  2955.     AH = E9h
  2956.     ???
  2957. Return: ???
  2958. --------*-61---------------------------------
  2959. INT 61 - reserved for user interrupt
  2960. --------b-61---------------------------------
  2961. INT 61 - Atari Portfolio - EXTENDED BIOS
  2962.    provides subfunctions such as turning off the machine, accessing internal
  2963.    variables, and mapping memory cards
  2964. SeeAlso: INT 60"Atari"
  2965. --------b-61---------------------------------
  2966. INT 61 - HP 95LX System Manager - LOAD DS
  2967. SeeAlso: INT 0F"HP 95LX",INT 60"HP 95LX"
  2968. --------r-61---------------------------------
  2969. INT 61 - JPI TopSPEED Modula-2 v1 - PROCEDURE EXIT TRAP
  2970. SeeAlso: INT 60"JPI"
  2971. --------d-61---------------------------------
  2972. INT 61 - Adaptec and OMTI controllers - DRIVE 0 DATA
  2973. Note:    this vector stores the second four bytes of the parameter table for
  2974.       hard disk 0
  2975. SeeAlso: INT 60"Adaptec",INT 62"Adaptec",INT 63"Adaptec"
  2976. --------I-61---------------------------------
  2977. INT 61 - Sangoma CCIP (CCPOP 3270 resident module) INTERFACE
  2978.     BX:DX -> control block
  2979. SeeAlso: INT 67"Sangoma"
  2980. --------v-61---------------------------------
  2981. INT 61 - VIRUS - "SEMTEX"/"Screen Trasher" - INT 21h SUBSTITUTE
  2982. Note:    the virus copies the original INT 21h vector into INT 61h
  2983. SeeAlso: INT 21h,INT 60"VIRUS",INT 6B"VIRUS"
  2984. --------N-61---------------------------------
  2985. INT 61 - TCPOpen kernel - API
  2986.     ES:BX -> request packet (see below)
  2987. Program: TCPOpen is a TCP/IP protocol stack by Lanera
  2988. Note:    the interrupt number may be set to any value from 60h through 7Fh
  2989.       (default 61h) via the configuration file; there does not appear
  2990.       to be an installation check, though function FFFFh can be used to
  2991.       verify that the software is indeed functioning
  2992.  
  2993. Format of request packet:
  2994. Offset    Size    Description
  2995.  00h  8 BYTEs    ???
  2996.  08h    WORD    function number (0000h-001Ah or FFF9h-FFFFh)
  2997.  0Ah    WORD    ???
  2998.  0Ch  2 BYTEs    ???
  2999.  0Eh    WORD    (return) return code
  3000.  10h  2 BYTEs    ???
  3001.  12h    WORD    ???
  3002.  14h    WORD    (return) 0001h if requested function complete
  3003.  16h    WORD    (return) ???
  3004.  18h  6 BYTEs    ???
  3005.  1Eh    DWORD    -> ???
  3006.  22h    WORD    ??? or 0000h
  3007.  24h    WORD    (return) ???
  3008.  
  3009. Function FFFFh: installation verification
  3010.     Return: offset 10h = BEEFh
  3011.         offset 14h = 0001h
  3012.         offset 24h = ???
  3013. Index:    installation check;TCPOpen kernel
  3014. --------N-61---------------------------------
  3015. INT 61 - FTP Software PC/TCP - TCP/IP TSR System Call interface
  3016.     AH = system call number (see also entries below)
  3017.         01h "pkt_alloc" (v2.05; this is "net_config" in v2.1+)
  3018.         02h "pkt_free" (v2.05; this is "get_kernel_info" in v2.1+)
  3019. Return: CF clear if successful
  3020.     CF set on error
  3021.         AL = basic error (see below)
  3022.         AH = suberror number
  3023. Notes:    the installation check consists of testing for the signature "TCPTSR"
  3024.       three bytes beyond the start of the interrupt handler
  3025.     INT 61 is the default; PC/TCP v2.05 may be configured to use any
  3026.       interrupt from 20h through E0h
  3027. BUG:    the SLIP kernel for v2.05 bounds-checks the wrong register, so values
  3028.       greater than 54h in AH may crash the system.    Other kernels may have
  3029.       this bug as well.
  3030. SeeAlso: INT 61/AH=00h"PC/TCP",INT 61/AH=2Ah,INT 61/AH=54h
  3031. Index:    installation check;PC/TCP
  3032.  
  3033. Values for error code:
  3034.  00h "NET_NOERR" successful
  3035.  01h "NET_ERR_INUSE" protocol or socket already in use
  3036.  02h "NET_DOS_ERR" MS-DOS error (returned as suberror code in AH)
  3037.  03h "NET_ERR_NOMEM" out of memory
  3038.  04h "NET_ERR_NOTNETCONN" not a network descriptor
  3039.  05h "NET_ERR_ILLEGALOP" invalid operation on given kind of network descriptor
  3040.  06h "NET_ERR_BADPKT" illegal or corrupted packet
  3041.  07h "NET_ERR_NOHOST" no host bound to specified connection
  3042.  08h "NET_ERR_CANTOPEN" unable to open file
  3043.  09h "NET_ERR_NET_UNREACHABLE" network is unreachable
  3044.  0Ah "NET_ERR_HOST_UNREACHABLE" host is unreachable (see subcodes below)
  3045.  0Bh "NET_ERR_PROT_UNREACHABLE" protocol is unreachable
  3046.  0Ch "NET_ERR_PORT_UNREACHABLE" port is unreachable
  3047.  0Dh "NET_ERR_TIMEOUT" operation timed out
  3048.  0Eh "NET_ERR_HOSTUNKNOWN" unable to resolve host name
  3049.  0Fh "NET_ERR_NOSERVERS" no name servers configured
  3050.  10h "NET_ERR_SERVER_ERR" bad reply from name server
  3051.     Subcodes: 0= no error, 1 = Host unreachable
  3052.  11h "NET_ERR_BADFORMAT" bad format for IP address or field in IP address struc
  3053.             is zero
  3054.  12h "NET_ERR_BADARG" invalid argument
  3055.  13h "NET_ERR_EOF" foreign host closed its end of connection
  3056.  14h "NET_ERR_RESET" connection has been reset
  3057.  15h "NET_ERR_WOULDBLOCK" recv() call was done on a non-blocking connection
  3058.             with no data available
  3059.  16h "NET_ERR_UNBOUND" insufficient resources to do operation
  3060.  17h "NET_ERR_NODESC" could not allocate network descriptor
  3061.  18h "NET_ERR_BADSYSCALL" invalid/unsupported kernel call
  3062.  19h "NET_ERR_CANTBROADCAST" unable to broadcast
  3063.  1Ah "NET_ERR_NOTESTAB" operation illegal because connection not established
  3064.  1Bh kernel busy, try again later
  3065.  1Ch "NET_ERR_ICMPMESG" an ICMP message was received (not on streams)
  3066.     (see subcodes below)
  3067. ---v2.1+---
  3068.  1Dh "NET_ERR_TERMINATING" internal kernel fatal error
  3069.  1Eh "NET_ERR_TAG_LOCKED" not allowed to set this tag (net_config)
  3070.  1Fh "NET_ERR_BAD_INTERFACE" non existent interface specified
  3071.  20h "NET_ERR_BADCONFIG" kernel cannot run - bad configuration
  3072.  21h "NET_ERR_EMM" expanded memory error
  3073.  22h "NET_ERR_CANT_SHUTDOWN" cant unload kernel (multitasker running)
  3074.  23h "NET_ERR_PARKED_IN" unable to unhook DOS interrupt
  3075.  24h "NET_ERR_NOQIOS" ran out of resources; try again later
  3076.  25h "NET_ERR_WOULD_TRUNCATE" datagram too large and "don't truncate" was set
  3077.  
  3078. Values for subcodes of error 0Ah "NET_ERR_HOST_UNREACHABLE":
  3079.  00h    no error
  3080.  01h    host unreachable
  3081.  02h    ARP failed
  3082.  03h    hardware failure
  3083.  04h    link failure
  3084.  05h    no route
  3085.  06h    gateway down
  3086.  
  3087. Values for subcodes of error 1Ch "NET_ERR_ICMPMESG":
  3088.  07h    unrecognised
  3089.  08h    can't fragment
  3090.  09h    srcr_fail
  3091.  0Ah    source quench
  3092.  0Bh    time exceeded
  3093.  0Ch    parameter problem
  3094.  0Dh    admin_prohib. see also code 0Ah
  3095. --------N-6100-------------------------------
  3096. INT 61 U - PC/TCP kernel v2.05+ - GET DEBUG INFORMATION
  3097.     AH = 00h
  3098.     DS:SI -> 216-byte buffer for network debugging information (see below)
  3099. Return: CF clear
  3100.     AX = 0000h
  3101.     buffer filled
  3102. Notes:    this call is not documented by FTP, Inc. for any version
  3103.     most of the information returned by this call is available via the
  3104.       documented get_kernel_info or net_info commands.
  3105.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  3106. SeeAlso: INT 61"PC/TCP",INT 61/AH=2Ah"PC/TCP"
  3107.  
  3108. Format of network debugging information:
  3109. Offset    Size    Description
  3110.  00h    DWORD    number of interrupts
  3111.  04h    DWORD    receive buffer low-water mark
  3112.  08h    DWORD    transmit buffer low-water mark
  3113.  0Ch    DWORD    number of packets received
  3114.  10h    DWORD    number of packets transmitted
  3115.  14h    DWORD    total receive errors
  3116.  18h    DWORD    total transmit errors
  3117.  1Ch  4 BYTEs    ???
  3118.  20h    DWORD    receive resets
  3119.  24h    DWORD    transmit resets
  3120.  28h    DWORD    number of "runts" received
  3121.  2Ch    DWORD    number of alignment errors on received packets
  3122.  30h    DWORD    number of CRC errors on received packets
  3123.  34h    DWORD    number of parity errors on received packets
  3124.  38h    DWORD    number of receive overflow errors
  3125.  3Ch    DWORD    number of oversized packets received
  3126.  40h    DWORD    number of packets lost due to lack of buffers
  3127.  44h    DWORD    receive timeouts
  3128.  48h 32 BYTEs    ???
  3129.  68h    DWORD    number of transmit collisions
  3130.  6Ch    DWORD    number of transmit timeouts
  3131.  70h    DWORD    number of transmit underflows
  3132.  74h    DWORD    number of lost "crs" on transmit
  3133.  78h    DWORD    number of times heartbeat failed on transmit
  3134.  7Ch 24 BYTEs    ???
  3135.  94h    WORD    free packet buffers
  3136.  96h    WORD    total packet buffers
  3137.  98h    WORD    minimum number of packet buffers free since kernel started
  3138.  9Ah 24 BYTEs    ???
  3139.  B2h    DWORD    pointer to TCP connection list???
  3140.  B6h    DWORD    pointer to IP routing table???
  3141.  BAh 30 BYTEs    ???
  3142. --------V-610000-----------------------------
  3143. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - ZOOM DISPLAY
  3144.     AX = 0000h
  3145.     BX = zoom factor (0-7)
  3146. Desc:    zooms the display based on the given zoom factor
  3147. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  3148.       obtained by calling INT 16/AH=FFh
  3149.     not all vendors include the Tseng TSR which supports these functions
  3150. SeeAlso: AX=0001h"OPTIMA",AX=0002h"OPTIMA",AX=0005h"OPTIMA"
  3151. SeeAlso: INT 16/AH=FFh"OPTIMA"
  3152. --------N-610001SF0001-----------------------
  3153. INT 61 - Banyan VINES - "Sosock" - OPEN COMMUNICATIONS SOCKET
  3154.     AX = 0001h subfn 0001h
  3155.     DS:DX -> communications control block (function 0001h)
  3156. Return: AX = status (see below)
  3157. Note:    Banyan can use any interrupt from 60h through 66h.  The Banyan
  3158.       interrupt handler is identified by the string "BANV" in the four
  3159.       bytes immediately preceding the interrupt handler
  3160. SeeAlso: AX=0001h/SF=0002h,AX=0001h/SF=0008h,INT 15/AX=DE2Eh
  3161.  
  3162. Values for status:
  3163.  0000h    successful
  3164.  0001h    service not installed
  3165.  0002h    invalid service ID
  3166.  0098h    resource already in use
  3167.  009Eh    address family does not exist
  3168.  009Fh    socket type does not exist
  3169.  00A0h    protocol does not exist
  3170.  00A1h    no more sockets available
  3171.  00A2h    no more buffer space available
  3172.  
  3173. Format of control block:
  3174. Offset    Size    Description
  3175.  00h    WORD    0001h
  3176.  02h    WORD    pointer to argument block
  3177.  04h    WORD    error return code
  3178.  06h  4 BYTEs    reserved
  3179.  
  3180. Format of argument block:
  3181. Offset    Size    Description
  3182.  00h    WORD    pointer to 2-byte buffer for socket identifier
  3183.  02h    WORD    address family
  3184.         0003h Banyan
  3185.  04h    WORD    socket type
  3186.         in address family 0003h
  3187.             0001h IPC socket
  3188.             0002h SPP socket
  3189.  06h    WORD    protocol number
  3190.         FFFFh default
  3191.  08h    WORD    pointer to 16-byte buffer for socket address
  3192.  0Ah    WORD    local port number
  3193.         0000h if service should assign transient port number
  3194.         0001h to 01FFh well-known port number (assigned by Banyan)
  3195.  
  3196. Format of IPC port:
  3197. Offset    Size    Description
  3198.  00h    WORD    address family (always 0003h for Banyan ports)
  3199.  04h  4 BYTEs    network number (server's serial number)
  3200.  06h    WORD    subnet number  (0001h = server, 8000h-FFFEh = PC)
  3201.  08h    WORD    port ID (0001h-01FFh for "well-known" ports)
  3202.  0Ah    BYTE    hop count
  3203.  0Bh  5 BYTEs    filler
  3204. --------N-610001SF0002-----------------------
  3205. INT 61 - Banyan VINES - "Sosend" - INITIATE OUTPUT EVENT
  3206.     AX = 0001h subfn 0002h
  3207.     DS:DX -> communications control block (function 0002h)
  3208. Return: AX = status (see below)
  3209. Note:    Banyan can use any interrupt from 60h through 66h.  The Banyan
  3210.       interrupt handler is identified by the string "BANV" in the four
  3211.       bytes immediately preceding the interrupt handler
  3212. SeeAlso: AX=0001h/SF=0001h,AX=0001h/SF=0005h
  3213.  
  3214. Values for status:
  3215.  0000h    successful
  3216.  0001h    service not installed
  3217.  0002h    invalid service ID
  3218.  0003h-000Ah reserved for BANV interface errors
  3219.  0097h    invalid socket identifier
  3220.  009Bh    destination node unreachable
  3221.  009Ch    message overflow
  3222.  009Dh    destination socket nonexistent
  3223.  00A2h    no more buffer space
  3224.  00A3h    timeout
  3225.  00B1h    resource disconnect
  3226.  
  3227. Format of control block:
  3228. Offset    Size    Description
  3229.  00h    WORD    0002h
  3230.  02h    WORD    pointer to argument block (see below)
  3231.  04h    WORD    error return code
  3232.         0000h successful
  3233.         0097h invalid socket ID
  3234.         00A2h no more buffer space
  3235.         00A3h timeout event
  3236.         00A5h resource not available
  3237.         00A6h internal communication failure
  3238.         00B1h resource disconnect
  3239.  06h  4 BYTEs    reserved
  3240.  
  3241. Format of argument block:
  3242. Offset    Size    Description
  3243.  00h    WORD    routine metric
  3244.  02h    WORD    error return code
  3245.  04h    WORD    socket identifier
  3246.  06h    WORD    pointer to send buffer
  3247.  08h    WORD    length of send buffer
  3248.  0Ah    WORD    flags
  3249.         bit 0: async request
  3250.         bit 1: reliable message
  3251.         bit 3: end of user message received
  3252.         bit 4: vectored request (if set, send buffer contains buffer
  3253.             descriptors)
  3254.         bit 5: connection-specific receive
  3255.         bit 6: change to connection-specific receive mode
  3256.  0Ch 16 BYTEs    socket address (see below)
  3257.  1Ch    WORD    timeout value in multiples of 200ms
  3258.  1Eh    WORD    connection identifier
  3259.  20h    WORD    type of request
  3260.         0001h send message
  3261.         0002h establish a virtual connection
  3262.         0003h terminate a virtual connection
  3263.  
  3264. Format of buffer descriptor:
  3265. Offset    Size    Description
  3266.  00h    WORD    data segment
  3267.  02h    WORD    buffer pointer
  3268.  04h    WORD    buffer length
  3269.  06h    WORD    character count
  3270.  
  3271. Format of socket address for unreliable datagrams:
  3272. Offset    Size    Description
  3273.  00h    WORD    0003h      address family
  3274.  02h    DWORD    FFFFFFFFh network number
  3275.  06h    WORD    FFFFh      subnet number
  3276.  08h    WORD          local port number
  3277.  0Ah    BYTE    00h-0Fh      hop count
  3278.  0Bh  5 BYTEs    0000h      filler
  3279. --------N-610001SF0003-----------------------
  3280. INT 61 - Banyan VINES - "Sorec" - RECEIVE INPUT EVENT NOTIFICATION
  3281.     AX = 0001h subfn 0003h
  3282.     DS:DX -> communications control block (function 0003h)
  3283. Return: AX = status (00-0Ah,97h,A2h,A3h) (see AX=0001h/SF=0002h)
  3284. Note:    Banyan can use any interrupt from 60h through 66h.  The Banyan
  3285.       interrupt handler is identified by the string "BANV" in the four
  3286.       bytes immediately preceding the interrupt handler
  3287. SeeAlso: AX=0001h/SF=0002h
  3288.  
  3289. Format of control block:
  3290. Offset    Size    Description
  3291.  00h    WORD    0003h
  3292.  02h    WORD    pointer to argument block (see below)
  3293.  04h    WORD    error return code
  3294.         0000h successful
  3295.         0097h invalid socket ID
  3296.         00A2h no more buffer space
  3297.         00A3h timeout event
  3298.         00A5h resource not available
  3299.         00A6h internal communication failure
  3300.         00B1h resource disconnect
  3301.  06h  4 BYTEs    reserved
  3302.  
  3303. Format of argument block:
  3304. Offset    Size    Description
  3305.  00h    WORD    character count
  3306.  02h    WORD    error return code
  3307.  04h    WORD    socket identifier
  3308.  06h    WORD    pointer to receive buffer
  3309.  08h    WORD    length of receive buffer
  3310.  0Ah    WORD    flags
  3311.         bit 0: async request
  3312.         bit 2: flush receive buffer on overflow
  3313.         bit 3: end of user message received
  3314.         bit 4: vectored request (if set, receive buffer contains buffer
  3315.             descriptors)
  3316.         bit 5: connection-specific receive
  3317.         bit 6: change to connection-specific receive mode
  3318.  0Ch 16 BYTEs    socket address
  3319.  1Ch    WORD    timeout value in multiples of 200ms
  3320.  1Eh    WORD    connection identifier
  3321.  20h    WORD    type of response
  3322.         0001h message received
  3323.         0002h virtual connection established
  3324.         0003h virtual connection terminated
  3325.  
  3326. Format of buffer descriptor:
  3327. Offset    Size    Description
  3328.  00h    WORD    data segment
  3329.  02h    WORD    buffer pointer
  3330.  04h    WORD    buffer length
  3331.  06h    WORD    character count
  3332. --------N-610001SF0004-----------------------
  3333. INT 61 - Banyan VINES - "Soclose" - CLOSE A SOCKET
  3334.     AX = 0001h subfn 0004h
  3335.     DS:DX -> communications control block (function 0004h)
  3336. Return: AX = status (00h-0Ah,97h) (see AX=0001h/SF=0002h)
  3337. Note:    Banyan can use any interrupt from 60h through 66h.  The Banyan
  3338.       interrupt handler is identified by the string "BANV" in the four
  3339.       bytes immediately preceding the interrupt handler
  3340. SeeAlso: AX=0001h/SF=0001h,INT 15/AX=DE2Eh
  3341.  
  3342. Format of control block:
  3343. Offset    Size    Description
  3344.  00h    WORD    0004h
  3345.  02h    WORD    pointer to argument block (see below)
  3346.  04h    WORD    error return code
  3347.  06h  4 BYTEs    reserved
  3348.  
  3349. Format of argument block:
  3350. Offset    Size    Description
  3351.  00h    WORD    socket identifier
  3352. --------N-610001SF0005-----------------------
  3353. INT 61 - Banyan VINES - "Sowait" - WAIT FOR ASYNCHRONOUS EVENT COMPLETION
  3354.     AX = 0001h subfn 0005h
  3355.     DS:DX -> communications control block (function 0005h)
  3356. Return: AX = status (see below)
  3357. Notes:    Banyan can use any interrupt from 60h through 66h.  The Banyan
  3358.       interrupt handler is identified by the string "BANV" in the four
  3359.       bytes immediately preceding the interrupt handler
  3360.     returns results for all asynchronous operations invoked from the
  3361.       data segment used for this call
  3362. SeeAlso: AX=0001h/SF=0002h,AX=0001h/SF=0009h
  3363.  
  3364. Values for status:
  3365.  0000h    successful
  3366.  0001h    service not installed
  3367.  0002h    invalid service ID
  3368.  0003h-000Ah reserved for BANV interface errors
  3369.  00A2h    no more buffer space available
  3370.  00A3h    timeout event
  3371.  
  3372. Format of control block:
  3373. Offset    Size    Description
  3374.  00h    WORD    0005h
  3375.  02h    WORD    pointer to argument block (see below)
  3376.  04h    WORD    error return code
  3377.  06h  4 BYTEs    reserved
  3378.  
  3379. Format of argument block:
  3380. Offset    Size    Description
  3381.  00h    WORD    pointer to WORD event pointer
  3382.  02h    WORD    timeout in multiples of 200ms, FFFFh = infinite
  3383. --------N-610001SF0008-----------------------
  3384. INT 61 - Banyan VINES - "Sosession" - REGISTER APPLICATION WITH COMM SERVICE
  3385.     AX = 0001h subfn 0008h
  3386.     DS:DX -> communications control block (function 0008h)
  3387. Return: AX = status
  3388.         0000h  successful
  3389.         00A2h  no more buffer space available
  3390. Note:    Banyan can use any interrupt from 60h through 66h (default 61h).  The
  3391.       Banyan interrupt handler is identified by the string "BANV" in the
  3392.       four bytes immediately preceding the interrupt handler
  3393. SeeAlso: AX=0001h/SF=0001h,AX=0001h/SF=0009h
  3394.  
  3395. Format of control block:
  3396. Offset    Size    Description
  3397.  00h    WORD    0008h
  3398.  02h    WORD    process type
  3399.         0001h transient process
  3400.         0002h resident process
  3401.  04h    WORD    error return code
  3402.  06h  4 BYTEs    reserved
  3403. --------N-610001SF000B-----------------------
  3404. INT 61 - Banyan VINES - "Soint" - SET USER COMPLETION FUNCTION
  3405.     AX = 0001h subfn 000Bh
  3406.     DS:DX -> communications control block (function 000Bh)
  3407. Return: AX = status (00h-0Ah,A2h) (see AX=0001h/SF=0005h)
  3408. Notes:    Banyan can use any interrupt from 60h through 66h.  The Banyan
  3409.       interrupt handler is identified by the string "BANV" in the four
  3410.       bytes immediately preceding the interrupt handler
  3411.     FAR user function is invoked with SS,DS, and ES set to segment of
  3412.       control block, and with the stack containing
  3413.         DWORD    return address
  3414.         WORD    argument pointer (sosend or sorec argument block)
  3415.         WORD    error return code
  3416.             0000h argument pointer is valid
  3417.             00A3h timeout
  3418. SeeAlso: AX=0001h/SF=0005h,AX=0001h/SF=0008h
  3419.  
  3420. Format of control block:
  3421. Offset    Size    Description
  3422.  00h    WORD    000Bh
  3423.  02h    WORD    pointer to argument block (see below)
  3424.  04h    WORD    error return code
  3425.  06h  2 BYTEs    reserved
  3426.  08h    WORD    user CS register
  3427.  
  3428. Format of argument block:
  3429. Offset    Size    Description
  3430.  00h    WORD    pointer to user interrupt function
  3431.  02h    WORD    pointer to user stack
  3432.  04h    WORD    initial timeout value in multiples of 200ms, FFFFh = infinite
  3433. --------V-610001-----------------------------
  3434. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - CENTER ZOOM WINDOW
  3435.     AX = 0001h
  3436.     BX = X coordinate to center
  3437.     CX = Y coordinate to center
  3438. Desc:    Positions the zoom window such that the specified window-relative
  3439.       coordinates appear as close as possible to the center of the
  3440.       display.  Useful for scrolling and panning.
  3441. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  3442.       obtained by calling INT 16/AH=FFh
  3443.     not all vendors include the Tseng TSR which supports these functions
  3444. SeeAlso: AX=0000h"OPTIMA",AX=0002h"OPTIMA",AX=0005h"OPTIMA"
  3445. SeeAlso: INT 16/AH=FFh"OPTIMA"
  3446. --------I-610002-----------------------------
  3447. INT 61 - Banyan VINES - 3270 INTERFACE
  3448.     AX = 0002h
  3449.     BH = function
  3450.         00h "pi2reset"  reset 3270/SNA or 3270/BSC driver
  3451.         02h "pi2bsc" (3270/BSC only)
  3452.         03h "pi2get"    get information stored in 3270 resident driver
  3453.         04h "pi2put"    store information in 3270 resident driver
  3454.         05h "pi2gcur"   get current screen position
  3455.         07h "pi2sdat"   send data keystroke
  3456.         08h "pi2scom"   send command keystroke
  3457.         0Ah "pi2field"  get field info for arbitrary screen positions
  3458.         0Fh "pi2stat"   get logical unit/device status
  3459.         12h "pi2nlus"   determine logical unit/device assignment
  3460.         13h "pi2gate"   specifies comm port address to gateway service
  3461.         14h "pi2attach" attach a logical unit/device
  3462.         15h "pi2sdev"   save logical unit/device info in resident driver
  3463.                 (not supported in >3.0)
  3464.         16h "pi2gdev"   get device information (not supported in >3.0)
  3465.         17h "pi2luinfo" get info about specific logical unit/device
  3466.         18h "pi2gerr"   get finer error detail
  3467.         19h "pi2dhold"  (3270/SNA only)  holds a 3270 device
  3468.         1Ah "pi2shut"   release memory-resident module
  3469.         1Ch "pi2sprof"  save profile info in res driver (not supp in >3.0)
  3470.         1Dh "pi2gprof"  get prevsly stored profile info (not supp in >3.0)
  3471.     DS:CX -> argument block (except BH=00h,1Ah)
  3472. Return: AX = status (see below)
  3473. Notes:    Either 3270/SNA or 3270/BSC interface may use AX=0002h, depending on
  3474.       which is loaded first.  The other interface will use AX=000Ah
  3475.     Status codes greater than 63h indicate an inconsistency in the 3270/SNA
  3476.       or 3270/BSC resident driver, which must be reloaded by the user
  3477.  
  3478. Values for status:
  3479.  0000h    successful
  3480.  000Bh    invalid parameter or data does not fit data area
  3481.  000Ch    another code path currently active in resident driver
  3482.  000Dh    operation currently not allowed
  3483.  0032h    encountered connection disconnect error
  3484.  0033h    encountered "sosend" completion error
  3485.  0034h    encountered "sosend" communication error
  3486.  0035h    attach request refused.    extended error info via "pi2gerr":
  3487.     01h resource unavailable
  3488.     02h invalid type
  3489.     03h version mismatch
  3490.     04h invalid logical unit number
  3491.     05h error during ARL processing
  3492.     06h no access for user
  3493.  0071h    encountered "sosock" error
  3494.  0072h    encountered unrecognizable error
  3495.  0073h    encountered "sowait" error (extended info via "pi2gerr")
  3496.  0074h    encountered invalid type-of-request on "sowait"
  3497.  0075h    encountered "sorec" error (extended info via "pi2gerr")
  3498.  0076h    encountered "sorec" completion error (ext info via "pi2gerr")
  3499.  0077h    encountered connection request
  3500.  0078h    encountered unrecognizable data
  3501.  0079h    encountered unknown connection ID (ext info via "pi2gerr")
  3502.  
  3503. Format of argument block for BH=03h,04h:
  3504. Offset    Size    Description
  3505.  00h    WORD    size of data area (max 256)
  3506.  02h  N BYTEs    data area
  3507.  
  3508. Format of argument block for BH=05h:
  3509. Offset    Size    Description
  3510.  00h    WORD    logical unit/device number
  3511.  02h    WORD    pointer to WORD buffer for cursor index
  3512.  04h    WORD    pointer to BYTE buffer for current field attribute
  3513.  
  3514. Format of argument block for BH=07h:
  3515. Offset    Size    Description
  3516.  00h    WORD    logical unit/device number
  3517.  02h    WORD    ASCII data byte
  3518.  04h    WORD    pointer to WORD count of characters which will need updating
  3519.  
  3520. Format of argument block for BH=08h:
  3521. Offset    Size    Description
  3522.  00h    WORD    logical unit/device number
  3523.  02h    WORD    keystroke
  3524.         0000h Enter
  3525.         0001h Clear
  3526.         0002h PA1
  3527.         0003h PA2
  3528.         0004h PA3
  3529.         0005h PF1
  3530.         ...
  3531.         001Ch PF24
  3532.         001Dh CSELECT (cursor select)
  3533.         001Eh Insert
  3534.         001Fh Delete
  3535.         0020h EOField
  3536.         0021h EINPUT (erase input)
  3537.         0022h Reset
  3538.         0023h Attention
  3539.         0024h SysReq
  3540.         0025h Duplicate
  3541.         0026h Fieldmark
  3542.         0027h Home
  3543.         0028h NextLine
  3544.         0029h Tab
  3545.         002Ah BackTab
  3546.         002Bh cursor up
  3547.         002Ch cursor down
  3548.         002Dh cursor right
  3549.         002Eh cursor left
  3550.         002Fh double cursor right
  3551.         0030h double cursor left
  3552.         0031h PRINT
  3553.         0032h CANCEL
  3554.         0033h Backspace
  3555.  
  3556. Format of argument block for BH=0Ah:
  3557. Offset    Size    Description
  3558.  00h    WORD    logical unit/device number
  3559.  02h    WORD    screen index
  3560.  04h    WORD    pointer to WORD buffer for field length
  3561.  06h    WORD    pointer to WORD buffer for offset in screen of field start
  3562.  
  3563. Format of argument block for BH=0Fh:
  3564. Offset    Size    Description
  3565.  00h    WORD    logical unit/device number
  3566.  02h    WORD    clear mask (clear these bits of status after returning status)
  3567.  04h    WORD    pointer to WORD buffer for device status (see below)
  3568.  
  3569. Bitfields for device status:
  3570.  bit 10 status modified
  3571.  bit 9    buffer modified
  3572.  bit 8    set cursor
  3573.  bit 5    sound alarm
  3574.  bits 1-0  size of print line for printer logical units
  3575.     00  unformatted line
  3576.     01  40-character line
  3577.     10  64-character line
  3578.     11  80-character line
  3579.  
  3580. Format of argument block for BH=12h:
  3581. Offset    Size    Description
  3582.  00h    WORD    pointer to WORD buffer for number of logical units or devices
  3583.  02h    WORD    pointer to WORD buffer for version number
  3584.  04h    WORD    pointer to 64-byte buffer for logical unit/device list
  3585.  
  3586. Format of argument block for BH=13h:
  3587. Offset    Size    Description
  3588.  00h 16 BYTEs    communications port address (see AX=0001h#"Sosock")
  3589.  
  3590. Format of argument block for BH=14h:
  3591. Offset    Size    Description
  3592.  00h    WORD    logical unit/device number
  3593.         0000h attach any free device of the specified type
  3594.  02h    WORD    logical unit/device type
  3595.         (3270/SNA) 01h, 02h, or 03h
  3596.         (3270/BSC) 02h display
  3597.         (3270/BSC) 03h printer
  3598.  04h    WORD    pointer to WORD buffer for attached logical unit/device number
  3599.  
  3600. Format of argument block for BH=16h:
  3601. Offset    Size    Description
  3602.  00h    WORD    pointer to 18-byte buffer for device block (see below)
  3603.         first WORD must be set to desired logical unit/device number
  3604.  
  3605. Format of argument block for BH=17h:
  3606. Offset    Size    Description
  3607.  00h    WORD    logical unit/device number
  3608.  02h    WORD    pointer to information block in caller's DS (see below)
  3609.  
  3610. Format of argument block for BH=18h:
  3611. Offset    Size    Description
  3612.  00h    WORD    pointer to WORD buffer for major error code
  3613.  02h    WORD    pointer to WORD buffer for minor error code
  3614.  
  3615. Format of argument block for BH=19h:
  3616. Offset    Size    Description
  3617.  00h    WORD    logical unit/device number
  3618.  
  3619. Format of argument block for BH=1Ch,1Dh:
  3620. Offset    Size    Description
  3621.  00h    WORD    pointer to profile block in caller's DS (see below)
  3622.  
  3623. Format of device block, argument block for BH=15h:
  3624. Offset    Size    Description
  3625.  00h    WORD    logical unit/device number
  3626.  02h    WORD    logical unit/device type
  3627.  04h    WORD    display model number
  3628.  06h    WORD    numeric checking
  3629.  08h    WORD    status line
  3630.  0Ah    BYTE    unprotected normal field attribute
  3631.  0Bh    BYTE    unprotected intensified field attribute
  3632.  0Ch    BYTE    protected normal field attribute
  3633.  0Dh    BYTE    protected intensified field attribute
  3634.  0Eh    WORD    reserved
  3635.  10h    WORD    printer port number
  3636.  
  3637. Format of information block:
  3638. Offset    Size    Description
  3639.  00h    WORD    device model number
  3640.  02h    DWORD    screen buffer pointer
  3641.  06h    DWORD    status line pointer (see below)
  3642.  0Ah    DWORD    reserved
  3643.  
  3644. Format of status line:
  3645. Offset    Size    Description
  3646.  00h    BYTE    comm line status
  3647.         00h inactive
  3648.         01h active
  3649.  01h    BYTE    activation level
  3650.         01h physical unit activated
  3651.         02h logical unit also activated
  3652.         03h session is bound
  3653.  02h    BYTE    data traffic state
  3654.         00h inactive
  3655.         01h active
  3656.  03h    BYTE    screen ownership
  3657.         00h SLU->PLU sessoin owns screen
  3658.         01h SLU->SSCP session owns screen
  3659.  04h    BYTE    keyboard status (see below)
  3660.  05h    BYTE    insert mode
  3661.         01h if in insert mode
  3662.  06h    BYTE    numeric
  3663.         01h if current screen buffer is numeric only
  3664.  07h    BYTE    printer status
  3665.         00h printer not assigned
  3666.         01h printer is inactive
  3667.         02h printer error
  3668.         03h currently printing
  3669.         04h printer is busy
  3670.         05h printer is very busy
  3671.  08h    BYTE    printer assignment
  3672.  09h    BYTE    maximum size of network name
  3673.  0Ah  N BYTEs    ASCIZ network name
  3674.     BYTE    maximum size of message window
  3675.       M BYTEs    null-terminated message window
  3676.     BYTE    code set
  3677.         00h EBCDIC
  3678.         01h ASCII
  3679.       M BYTEs    extended attributes
  3680.         01h extended attributes are in effect (stored at screen+1920)
  3681.             each extended attribute specifies
  3682.             bits 0,1: 00=normal, 01=blink, 10=reverse, 11=underscor
  3683.             bits 2-4: 000=default,001=blue,010=red,011=pink,
  3684.                   100=green,101=turquoise,110=yellow,111=white
  3685.     BYTE    extended color
  3686.         01h other than base color is in effect
  3687.  
  3688. Values for keyboard status:
  3689.  00h    UNLOCK - ready to accept data
  3690.  01h    TIME - aid was struck
  3691.  02h    SYSTEM - received response no restore
  3692.  03h    FUNCTION - unavailable keyboard function
  3693.  04h    INPUT - not currently used
  3694.  05h    ENDFIELD - field filled in insert mode
  3695.  06h    PROTECTED - attempt to enter in protected field
  3696.  07h    NUMERIC - attempt to enter in numeric field
  3697.  08h    PROGRAM - error in outbound data stream
  3698.  
  3699. Format of profile block:
  3700. Offset    Size    Description
  3701.  00h 64 BYTEs    gateway service name
  3702.  40h 16 BYTEs    gateway comm port address
  3703.  50h    WORD    primary logical unit number
  3704.  52h    WORD    secondary logical unit type
  3705.  54h    WORD    secondary logical unit number
  3706.  56h    WORD    printer assignment
  3707.  58h 50 BYTEs    keyboard definitions filename
  3708. --------V-610002-----------------------------
  3709. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - END ZOOM
  3710.     AX = 0002h
  3711. Desc:    switches off zoom and returns window to its original state
  3712. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  3713.       obtained by calling INT 16/AH=FFh
  3714.     not all vendors include the Tseng TSR which supports these functions
  3715. SeeAlso: AX=0000h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  3716. --------N-610003SF00-------------------------
  3717. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INIT USER BUFFER PTR INFO
  3718.     AX = 0003h subfn 00h
  3719.     DS:BX -> argument block (see below)
  3720. Return: AX = status (see below)
  3721. SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=08h,AX=0003h/SF=0Dh
  3722.  
  3723. Values for status:
  3724.  0000h    successful
  3725.  000Bh    invalid session ID
  3726.  000Ch    session not active
  3727.  000Dh    invalid request type
  3728.  000Eh    invalid parameters
  3729.  000Fh    out of heap space
  3730.  0010h    timeout on send
  3731.  0011h    Banyan communications error
  3732.  0012h    session not waiting for host
  3733.  0013h    session is active
  3734.  0014h    duplicate suspend session request
  3735.  0015h    no session suspended
  3736.  0016h    ring data buffer full
  3737.  0017h    printer error encountered
  3738.  0018h    Banyan communications error
  3739.  0019h    unable to make connection
  3740.  001Ah    no ring buffer specified at startup
  3741.  001Bh    service is down
  3742.  001Ch    invalid service name
  3743.  001Dh    service is closed
  3744.  001Eh    invalid connection name
  3745.  001Fh    max session limit reached for service
  3746.  0020h    access rights list for connection/dialout does not include this user
  3747.  0021h    service not responding
  3748.  0022h    missing telephone number
  3749.  
  3750. Format of argument block:
  3751. Offset    Size    Description
  3752.  00h    BYTE    session ID (00h)
  3753.  01h    BYTE    00h (func "initialize user buffer pointer information area")
  3754.  02h    WORD    -> user buffer ptr info area in caller's current DS (see below)
  3755.  
  3756. Format of user buffer ptr info area:
  3757. Offset    Size    Description
  3758.  00h    WORD    flags
  3759.         0000h don't read interface's data buffer
  3760.         0001h read data buffer
  3761.  02h    DWORD    pointer to ring buffer
  3762.  06h    WORD    length of ring buffer
  3763.  08h    WORD    ring buffer offset to last byte read by caller
  3764.  0Ah    DWORD    pointer to WORD containing offset of last byte
  3765.           in ring buffer filled
  3766.  0Eh    DWORD    pointer to screen buffer
  3767.  12h    DWORD    pointer to field containing cursor position
  3768.  16h    DWORD    pointer to terminal status area (see below)
  3769.  
  3770. Format of terminal status area:
  3771. Offset    Size    Description
  3772.  00h    BYTE    status of session: 4Eh=oNline, 46h=oFfline, 57h=Waiting
  3773.  01h    BYTE    terminal type (00h=VT100, 01h=TTY, 02h=VT52, 03h=IBM3101)
  3774.  02h    BYTE    current keypad mode (VT100,VT52 only)
  3775.         4Eh ("N") numeric mode
  3776.         41h ("A") application mode
  3777.  03h  4 BYTEs    current state of LEDs (VT100 only)
  3778.         00h off
  3779.         01h on
  3780.  07h    WORD    line error count
  3781.  09h    WORD    primary error code (see below)
  3782.  0Bh    WORD    secondary error code
  3783.  
  3784. Values for primary error code:
  3785.  0000h    no error
  3786.  0001h    unable to make connection
  3787.  0002h    communications error, restart session
  3788.  0003h    async terminal emulation service unavailable
  3789.  0004h    lost carrier
  3790.  0005h    all matching lines busy
  3791.  0006h    no lines defined for connection name
  3792.  0007h    no dial lines available on server
  3793.  0008h    no matching dial lines available
  3794.  0009h    out of heap space
  3795.  000Ah    service error encountered
  3796.  000Bh    timed out waiting to connect
  3797.  000Ch    communications error
  3798.  000Dh    communications error
  3799.  000Eh    host wants file transferred to/from PC
  3800.  000Fh    host software changed session parameter
  3801.  0010h    host software changed tap settings
  3802.  0011h    host software changed LED indicator
  3803.  0012h    host software changed display background (secondary error code 00h for
  3804.       white on black, 01h for black on white)
  3805.  0013h    host software changed display option (secondary error code 00h for off,
  3806.       01h for on)
  3807.  0014h    communications error
  3808.  0015h    communications error
  3809.  0016h    unable to make connection
  3810.  0017h    unable to make connection
  3811. --------N-610003SF01-------------------------
  3812. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SEND TO HOST
  3813.     AX = 0003h subfn 01h
  3814.     DS:BX -> argument block (see below)
  3815. Return: AX = status (see AX=0003h/SF=00h)
  3816. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=02h,AX=0003h/SF=14h
  3817.  
  3818. Format of argument block:
  3819. Offset    Size    Description
  3820.  00h    BYTE    session ID (00h)
  3821.  01h    BYTE    01h (function "send to host")
  3822.  02h    BYTE    type
  3823.         00h ASCII byte
  3824.         01h ASCII string
  3825.         02h terminal function code
  3826.         03h up arrow
  3827.         04h down arrow
  3828.         05h left arrow
  3829.         06h right arrow
  3830.         07h break
  3831.  03h  N BYTEs    type-specific info (see below)
  3832.  
  3833. Format of type-specific info:
  3834. Offset    Size    Description
  3835. ---ASCII byte---
  3836.  03h    BYTE    byte to send to host
  3837. ---ASCII string---
  3838.  03h    WORD    length of string
  3839.  05h    WORD    pointer to string
  3840. ---terminal function code (VT52/VT100)---
  3841.  03h    BYTE    function code
  3842.         00h keypad 0
  3843.         01h keypad 1
  3844.         ...
  3845.         09h keypad 9
  3846.         0Ah keypad -
  3847.         0Bh keypad ,
  3848.         0Ch keypad .
  3849.         0Dh keypad ENTER
  3850.         0Eh PF1
  3851.         0Fh PF2
  3852.         10h PF3
  3853.         11h PF4
  3854. ---terminal function code (IBM3101)---
  3855.  03h    BYTE    function code
  3856.         00h PF1
  3857.         ...
  3858.         07h PF8
  3859.         08h Home
  3860. --------N-610003SF02-------------------------
  3861. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - "CONTROL MONITOR"
  3862.     AX = 0003h subfn 02h
  3863.     DS:BX -> argument block (see below)
  3864. Return: AX = status (see AX=0003h/SF=00h)
  3865. SeeAlso: AX=0003h/SF=03h,AX=0003h/SF=05h
  3866.  
  3867. Format of argument block:
  3868. Offset    Size    Description
  3869.  00h    BYTE    session ID (00h)
  3870.  01h    BYTE    02h (function "control monitor")
  3871.  02h    BYTE    display flag
  3872.         00h don't display data received from host
  3873.         01h display data
  3874. --------N-610003SF03-------------------------
  3875. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - "FLOW CONTROL DATA"
  3876.     AX = 0003h subfn 03h
  3877.     DS:BX -> argument block (see below)
  3878. Return: AX = status (see AX=0003h/SF=00h)
  3879. Desc:    this function permits the caller to freeze/unfreeze the display and
  3880.       the ring buffer
  3881. SeeAlso: AX=0003h/SF=02h,AX=0003h/SF=06h
  3882.  
  3883. Format of argument block:
  3884. Offset    Size    Description
  3885.  00h    BYTE    session ID (00h)
  3886.  01h    BYTE    03h (function "flow control data")
  3887.  02h    BYTE    flow control flag
  3888.         00h allow characters to be put into display or ring buffer
  3889.         01h don't place any more characters into display or ring buffer
  3890. --------N-610003SF04-------------------------
  3891. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - END ACTIVE SESSION
  3892.     AX = 0003h subfn 04h
  3893.     DS:BX -> argument block (see below)
  3894. Return: AX = status (see AX=0003h/SF=00h)
  3895. SeeAlso: AX=0003h/SF=0Ah,AX=0003h/SF=0Dh,AX=0003h/SF=0Fh
  3896.  
  3897. Format of argument block:
  3898. Offset    Size    Description
  3899.  00h    BYTE    session ID (00h)
  3900.  01h    BYTE    04h (function "end active session")
  3901. --------N-610003SF05-------------------------
  3902. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET SESSION PARAMETER
  3903.     AX = 0003h subfn 05h
  3904.     DS:BX -> argument block (see below)
  3905. Return: AX = status (see AX=0003h/SF=00h)
  3906. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=06h,AX=0003h/SF=08h
  3907.  
  3908. Format of argument block:
  3909. Offset    Size    Description
  3910.  00h    BYTE    session ID (00h)
  3911.  01h    BYTE    05h (function "set session parameter")
  3912.  02h    BYTE    parameter number (see below)
  3913.  03h    BYTE    new parameter value
  3914.  
  3915. Values for parameter number:
  3916.  00h    line speed (00h=any, 01h=50, 02h=110, 03h=134.5, 04h=150,
  3917.           05h=300, 06h=600, 07h=1200, 08h=2400, 09h=4800, 0Ah=9600)
  3918.  01h    parity (00h=none, 01h=odd, 02h=even)
  3919.  02h    duplex (00h=full, 01h=half)
  3920.  03h    character size (00h=7 bits, 01h=8 bits)
  3921.  04h    stop bits (00h=1, 01h=2)
  3922.  05h    XON/XOFF flow control (00h=no, 01h=yes)
  3923.  07h    intercharacter delay in tenths of a second
  3924.  08h    interline delay in tenths of a second
  3925.  09h    auto linefeed (00h=no, 01h=yes)
  3926.  0Ah    filter control characters (00h=no, 01h=yes)
  3927.  0Bh    terminal type (00h=VT100,01h=glassTTY,02h=VT52,03h=IBM3101)
  3928.  0Ch    auto wrap (00h=no, 01h=yes)
  3929.  0Dh    cursor shape (00h=underscore, 01h=block)
  3930.  0Eh    character set (00h=UK, 01h=US ASCII)
  3931.  0Fh    printer port (00h=LPT1, 01h=LPT2, 02h=LPT3)
  3932. --------N-610003SF06-------------------------
  3933. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET SESSION PARAMETER
  3934.     AX = 0003h subfn 06h
  3935.     DS:BX -> argument block (see below)
  3936. Return: AX = status (see AX=0003h/SF=00h)
  3937. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=05h,AX=0003h/SF=07h
  3938.  
  3939. Format of argument block:
  3940. Offset    Size    Description
  3941.  00h    BYTE    session ID (00h)
  3942.  01h    BYTE    06h (function "get session parameter")
  3943.  02h    BYTE    parameter number (see AX=0003h/SF=05h)
  3944.  03h    BYTE    (return) current parameter value
  3945. --------N-610003SF07-------------------------
  3946. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET TAB SETTINGS
  3947.     AX = 0003h subfn 07h
  3948.     DS:BX -> argument block (see below)
  3949. Return: AX = status (see AX=0003h/SF=00h)
  3950. SeeAlso: AX=0003h/SF=05h,AX=0003h/SF=08h
  3951.  
  3952. Format of argument block:
  3953. Offset    Size    Description
  3954.  00h    BYTE    session ID (00h)
  3955.  01h    BYTE    07h (function "set tab settings")
  3956.  02h    WORD    pointer to 80-byte buffer in caller's current DS
  3957.           each byte = 00h if no tab, 01h if tab at that position
  3958. --------N-610003SF08-------------------------
  3959. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET TAB SETTINGS
  3960.     AX = 0003h subfn 08h
  3961.     DS:BX -> argument block (see below)
  3962. Return: AX = status (see AX=0003h/SF=00h)
  3963. SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=07h
  3964.  
  3965. Format of argument block:
  3966. Offset    Size    Description
  3967.  00h    BYTE    session ID (00h)
  3968.  01h    BYTE    08h (function "get tab settings")
  3969.  02h    WORD    pointer to 80-byte buffer in caller's current DS
  3970.         each byte set to 00h if no tab, 01h if tab at that position
  3971. --------N-610003SF09-------------------------
  3972. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - REFRESH EMULATION SCREEN
  3973.     AX = 0003h subfn 09h
  3974.     DS:BX -> argument block (see below)
  3975. Return: AX = status (see AX=0003h/SF=00h)
  3976. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=0Bh
  3977.  
  3978. Format of argument block:
  3979. Offset    Size    Description
  3980.  00h    BYTE    session ID (00h)
  3981.  01h    BYTE    09h (function "refresh emulation screen")
  3982. --------N-610003SF0A-------------------------
  3983. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SUSPEND SESSION TEMPORARILY
  3984.     AX = 0003h subfn 0Ah
  3985.     DS:BX -> argument block (see below)
  3986. Return: AX = status (see AX=0003h/SF=00h)
  3987. SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=09h,AX=0003h/SF=0Bh,AX=0003h/SF=0Dh
  3988.  
  3989. Format of argument block:
  3990. Offset    Size    Description
  3991.  00h    BYTE    session ID (00h)
  3992.  01h    BYTE    0Ah (function "suspend session temporarily")
  3993.  02h    WORD    size of session information to be saved
  3994.  04h    WORD    pointer to buffer in caller's DS
  3995. --------N-610003SF0B-------------------------
  3996. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - RESUME SUSPENDED SESSION
  3997.     AX = 0003h subfn 0Bh
  3998.     DS:BX -> argument block (see below)
  3999. Return: AX = status (see AX=0003h/SF=00h)
  4000. SeeAlso: AX=0003h/SF=09h,AX=0003h/SF=0Ah
  4001.  
  4002. Format of argument block:
  4003. Offset    Size    Description
  4004.  00h    BYTE    session ID (00h)
  4005.  01h    BYTE    0Bh (function "restore previously suspended session")
  4006.  02h    WORD    size of buffer into which session info is restored
  4007.  04h    WORD    pointer to buffer in caller's DS
  4008. --------N-610003SF0C-------------------------
  4009. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET SCROLL LOCK CHECKING
  4010.     AX = 0003h subfn 0Ch
  4011.     DS:BX -> argument block (see below)
  4012. Return: AX = status (see AX=0003h/SF=00h)
  4013. SeeAlso: AX=0003h/SF=00h
  4014.  
  4015. Format of argument block:
  4016. Offset    Size    Description
  4017.  00h    BYTE    session ID (00h)
  4018.  01h    BYTE    0Ch (function "set state of scroll lock checking")
  4019.  02h    BYTE    check_scroll_lock flag
  4020.         00h off
  4021.         01h on (display of host data stopped while ScrollLock on)
  4022. --------N-610003SF0D-------------------------
  4023. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - EXIT EMULATION
  4024.     AX = 0003h subfn 0Dh
  4025.     DS:BX -> argument block (see below)
  4026. Return: AX = status (see AX=0003h/SF=00h)
  4027. SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=0Ah
  4028.  
  4029. Format of argument block:
  4030. Offset    Size    Description
  4031.  00h    BYTE    session ID (00h)
  4032.  01h    BYTE    0Dh (function "exit emulation")
  4033. --------N-610003SF0E-------------------------
  4034. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INTERRUPT ON CHAR FROM HOST
  4035.     AX = 0003h subfn 0Eh
  4036.     DS:BX -> argument block (see below)
  4037. Return: AX = status (see AX=0003h/SF=00h)
  4038. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=14h
  4039.  
  4040. Format of argument block:
  4041. Offset    Size    Description
  4042.  00h    BYTE    session ID (00h)
  4043.  01h    BYTE    0Eh (function "interrupt on character from host")
  4044.  02h    DWORD    pointer to routine to be called (0000h:0000h = don't call)
  4045.  06h    DWORD    stack pointer to use when call is made
  4046. --------N-610003SF0F-------------------------
  4047. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START A SESSION
  4048.     AX = 0003h subfn 0Fh
  4049.     DS:BX -> argument block (see below)
  4050. Return: AX = status (see AX=0003h/SF=00h)
  4051. SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=0Bh
  4052.  
  4053. Format of argument block:
  4054. Offset    Size    Description
  4055.  00h    BYTE    session ID (00h)
  4056.  01h    BYTE    0Fh (function "start a session")
  4057.  02h    WORD    pointer to information area in caller's current DS (see below)
  4058.  
  4059. Format of information area:
  4060. Offset    Size    Description
  4061.  00h    WORD    length of service name
  4062.  02h    WORD    pointer to service name in caller's DS
  4063.  04h    BYTE    type of connection (00h=connection name, 01h=dialout)
  4064.  05h    WORD    length of connection name/telephone number
  4065.  07h    WORD    pointer to connection name/telephone number
  4066. --------N-610003SF10-------------------------
  4067. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START/STOP PRINTING
  4068.     AX = 0003h subfn 10h
  4069.     DS:BX -> argument block (see below)
  4070. Return: AX = status (see AX=0003h/SF=00h)
  4071. SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=13h
  4072.  
  4073. Format of argument block:
  4074. Offset    Size    Description
  4075.  00h    BYTE    session ID (00h)
  4076.  01h    BYTE    10h (function "start/stop printing of data received from host)
  4077.  02h    WORD    print capture flag (00h=off, 01h=on)
  4078. --------N-610003SF11-------------------------
  4079. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET FILE TRANSFER PARAMETERS
  4080.     AX = 0003h subfn 11h
  4081.     DS:BX -> argument block (see below)
  4082. Return: AX = status (see AX=0003h/SF=00h)
  4083. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=12h
  4084.  
  4085. Format of argument block:
  4086. Offset    Size    Description
  4087.  00h    BYTE    session ID (00h)
  4088.  01h    BYTE    11h (function "get file transfer parameters")
  4089.  02h    WORD    pointer to info area in caller's current DS (see below)
  4090.  
  4091. Format of info area:
  4092. Offset    Size    Description
  4093.  00h    BYTE    protocol flag (00h none, 01h Kermit)
  4094.  01h    BYTE    direction flag (00h send, 01h receive)
  4095.  02h    BYTE    length of null-terminated PC filename
  4096.  03h    DWORD    pointer to null-terminated PC filename
  4097.  07h    BYTE    length of null-terminated host filename
  4098.  08h    DWORD    pointer to null-terminated host filename
  4099. --------N-610003SF12-------------------------
  4100. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET CONNECTION INFORMATION
  4101.     AX = 0003h subfn 12h
  4102.     DS:BX -> argument block (see below)
  4103. Return: AX = status (see AX=0003h/SF=00h)
  4104. SeeAlso: AX=0003h/SF=11h,AX=0003h/SF=15h
  4105.  
  4106. Format of argument block:
  4107. Offset    Size    Description
  4108.  00h    BYTE    session ID (00h)
  4109.  01h    BYTE    12h (function "get connection information")
  4110.  02h    WORD    offset of buffer for connection information (see below)
  4111.  
  4112. Format of connection information:
  4113. Offset    Size    Description
  4114.  00h    WORD    length of service name (returned)
  4115.  02h    WORD    pointer to 64-byte buffer for service name
  4116.  04h    BYTE    type of connection
  4117.         00h connection name
  4118.         01h dialout
  4119.  05h    WORD    length of connection name/telephone number
  4120.  07h    WORD    pointer to 64-byte buffer for name/telno
  4121.  09h    BYTE    server line number being used (returned)
  4122. --------N-610003SF13-------------------------
  4123. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START/STOP TRACING TRAFFIC
  4124.     AX = 0003h subfn 13h
  4125.     DS:BX -> argument block (see below)
  4126. Return: AX = status (see AX=0003h/SF=00h)
  4127. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=0Eh
  4128.  
  4129. Format of argument block:
  4130. Offset    Size    Description
  4131.  00h    BYTE    session ID (00h)
  4132.  01h    BYTE    13h (function "start/stop tracing data traffic in session")
  4133.  02h    BYTE    trace flag (00h=off, 01h=on)
  4134. --------N-610003SF14-------------------------
  4135. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INTERRUPT ON HOST MESSAGE
  4136.     AX = 0003h subfn 14h
  4137.     DS:BX -> argument block (see below)
  4138. Return: AX = status (see AX=0003h/SF=00h)
  4139. SeeAlso: AX=0003h/SF=0Eh
  4140.  
  4141. Format of argument block:
  4142. Offset    Size    Description
  4143.  00h    BYTE    session ID (00h)
  4144.  01h    BYTE    14h (function "interrupt on message from host")
  4145.  02h    DWORD    pointer to routine to be called (0000h:0000h = don't call)
  4146.  06h    DWORD    stack pointer to use when call is made
  4147. --------N-610003SF15-------------------------
  4148. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - RESET ERROR
  4149.     AX = 0003h subfn 15h
  4150.     DS:BX -> argument block (see below)
  4151. Return: AX = status (see AX=0003h/SF=00h)
  4152. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=12h
  4153.  
  4154. Format of argument block:
  4155. Offset    Size    Description
  4156.  00h    BYTE    session ID (00h)
  4157.  01h    BYTE    15h (function "reset error")
  4158. --------V-610003-----------------------------
  4159. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - REPORT ZOOM FACTOR
  4160.     AX = 0003h
  4161. Return: AX = zoom factor
  4162. Desc:    returns the current zoom factor
  4163. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  4164.       obtained by calling INT 16/AH=FFh
  4165.     not all vendors include the Tseng TSR which supports these functions
  4166. SeeAlso: AX=0000h"OPTIMA",AX=0005h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  4167. --------N-610004-----------------------------
  4168. INT 61 - Banyan VINES - GET SERVER SERIAL NUMBER
  4169.     AX = 0004h
  4170.     DS:DX -> request block (function 0008h)
  4171. Return: AX = status
  4172.         0000h server ID returned in request block
  4173.         000Fh invalid drive
  4174.         0015h drive not ready
  4175.  
  4176. Format of request block:
  4177. Offset    Size    Description
  4178.  00h    WORD    0008h
  4179.  02h    WORD    drive number (0=default, 1=A, ...)
  4180.  04h  6 BYTEs    buffer for server ID
  4181. --------V-610004-----------------------------
  4182. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - ENTER SPECIFY MODE
  4183.     AX = 0004h
  4184. Notes:    Specify Mode is enabled by hot key (seeAlso below), and allows
  4185.       panning and zooming via the numeric keypad.
  4186.     INT 61 is the default interrupt; the actual interrupt number can be
  4187.       obtained by calling INT 16/AH=FFh
  4188.     not all vendors include the Tseng TSR which supports these functions
  4189. SeeAlso: AX=0000h"OPTIMA",AX=0007h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  4190. --------N-610005-----------------------------
  4191. INT 61 - Banyan VINES - PRINTER CONTROL
  4192.     AX = 0005h
  4193.     DS:DX -> request block
  4194. Return: AX = status
  4195.         0000h successful
  4196.         0001h network software not installed or incompatible
  4197. SeeAlso: INT 2F/AX=D702h
  4198.  
  4199. Format of request block:
  4200. Offset    Size    Description
  4201.  00h    WORD    function
  4202.         0201h "endspool" all data for a print job has been sent
  4203.         0205h "getactive" get currently active printer port
  4204.  02h    WORD    number of active port (1-3)
  4205.  04h    WORD    ??? (0 for func 0201h, 3 for func 0205h)
  4206.  06h    WORD    0000h
  4207. --------V-610005-----------------------------
  4208. INT 61 - OPTIMA 1024 VGA-Sync - QUERY ZOOM WINDOW
  4209.     AX = 0005h
  4210.     BX:CX -> buffer for window parameters (see below)
  4211. Notes:    INT 61 is the default interrupt; the actual interrupt number can be
  4212.       obtained by calling INT 16/AH=FFh
  4213.     not all vendors include the Tseng TSR which supports these functions
  4214. SeeAlso: AX=0000h"OPTIMA",AX=0003h"OPTIMA",AX=0006h"OPTIMA"
  4215. SeeAlso: INT 16/AH=FFh"OPTIMA"
  4216.  
  4217. Format of window parameters:
  4218. Offset    Size    Description
  4219.  00h    WORD    X start of zoom window
  4220.  02h    WORD    Y start of zoom window
  4221.  04h    WORD    X end of zoom window
  4222.  06h    WORD    Y end of zoom window
  4223.  08h    WORD    current zoom factor
  4224.  0Ah    WORD    zoom offset start X
  4225.  0Ch    WORD    zoom offset start Y
  4226. --------V-610006-----------------------------
  4227. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - SET ZOOM WINDOW
  4228.     AX = 0006h
  4229.     BX:CX -> zoom window description (see below)
  4230. Notes:    width of zoom window must be a multiple of the pixel replication (zoom)
  4231.       factor
  4232.     INT 61 is the default interrupt; the actual interrupt number can be
  4233.       obtained by calling INT 16/AH=FFh
  4234.     not all vendors include the Tseng TSR which supports these functions
  4235. SeeAlso: AX=0000h"OPTIMA",AX=0001h"OPTIMA",AX=0005h"OPTIMA",AX=0008h"OPTIMA"
  4236. SeeAlso: INT 16/AH=FFh"OPTIMA"
  4237.  
  4238. Format of zoom window description:
  4239. Offset    Size    Description
  4240.  00h    WORD    X start of zoom window
  4241.  02h    WORD    Y start of zoom window
  4242.  04h    WORD    X end of zoom window
  4243.  06h    WORD    Y end of zoom window
  4244. --------V-610007-----------------------------
  4245. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - QUERY APPLICATION KEY
  4246.     AX = 0007h
  4247. Return: AX = current state (0000h/0001h)
  4248. Desc:    returns the current toggle state of the application (END) key in
  4249.       specify mode. E.g. in the OPTIMA AutoCAD driver, 0 means AutoCAD
  4250.       calls INT 61/AX=0001h every time the crosshair cursor moves.
  4251. Notes:    In specify mode, the END key has been reserved for applications.
  4252.     INT 61 is the default interrupt; the actual interrupt number can be
  4253.       obtained by calling INT 16/AH=FFh
  4254.     not all vendors include the Tseng TSR which supports these functions
  4255. SeeAlso: AX=0000h"OPTIMA",AX=0001h"OPTIMA",AX=0004h"OPTIMA"
  4256. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 7A"AutoCAD"
  4257. --------N-610007BX0002-----------------------
  4258. INT 61 - Banyan VINES - GET PORTS FOR A SERVICE
  4259.     AX = 0007h
  4260.     BX = 0002h
  4261.     DS:DX -> StreetTalk service name
  4262.     DS:DI -> port record block (see below)
  4263. Return: AX = status (see below)
  4264. SeeAlso: AX=0007h/BX=0004h
  4265.  
  4266. Values for status:
  4267.  0000h    successful
  4268.  0001h    PC network software not installed or incompatible
  4269.  03E9h    incorrect name syntax
  4270.  03EAh    organization name too long
  4271.  03EBh    group name too long
  4272.  03ECh    item name too long
  4273.  03EDh    StreetTalk name too long
  4274.  03F3h    organization not found
  4275.  03F4h    group not found
  4276.  03F5h    StreetTalk name not found
  4277.  03F8h    not a StreetTalk name
  4278.  0409h    modify access denied
  4279.  040Dh    appropriate StreetTalk name unavailable
  4280.  
  4281. Format of port record block:
  4282. Offset    Size    Description
  4283.  00h    WORD    number of 17-byte elements
  4284.  02h 17 BYTEs    element (byte 00h = input port type, bytes 01h-10h = port)
  4285.         (see AX=0001h#"Sosock" for port format)
  4286. --------N-610007BX0004-----------------------
  4287. INT 61 - Banyan VINES - SET PORTS FOR A SERVICE
  4288.     AX = 0007h
  4289.     BX = 0004h
  4290.     DS:DX -> StreetTalk name of service
  4291.     DS:DI -> port record block (see below)
  4292. Return: AX = status (see AX=0007h/BX=0002h)
  4293. SeeAlso: AX=0007h/BX=0002h
  4294.  
  4295. Format of port record block:
  4296. Offset    Size    Description
  4297.  00h    WORD    number of 17-byte elements
  4298.  02h 17 BYTEs    element: byte 00h = input port type, 01h-10h = port
  4299.         (see AX=0001h#"Sosock" for port format)
  4300. --------N-610007BX0005-----------------------
  4301. INT 61 - Banyan VINES - GET USER NAME
  4302.     AX = 0007h
  4303.     BX = 0005h
  4304.     DS:DX -> 64-byte buffer for user's StreetTalk name
  4305. Return: AX = status
  4306.         0000h successful
  4307.         0001h network software not installed or incompatible
  4308. Note:    if no user logged in, first byte of returned name will be 00h
  4309. SeeAlso: AX=0007h/BX=0007h
  4310. --------N-610007BX0006-----------------------
  4311. INT 61 - Banyan VINES - TRANSLATE ERROR INTO ASCII STRING
  4312.     AX = 0007h
  4313.     BX = 0006h
  4314.     SI = error code (>100)
  4315.     DS:DX -> 80-byte buffer for error text
  4316. Return: AX = status
  4317.         0000h successful
  4318.         0001h network software not installed or incompatible
  4319. --------N-610007BX0007-----------------------
  4320. INT 61 - Banyan VINES - VERIFY EXISTENCE OF NAME AND RETURN CANONICAL FORM
  4321.     AX = 0007h
  4322.     BX = 0007h
  4323.     DS:DX -> NiceName block (see below)
  4324. Return: AX = status (see AX=0007h/BX=0002h)
  4325. SeeAlso: AX=0007h/BX=0005h,AX=0007h/BX=0008h
  4326.  
  4327. Format of NiceName block:
  4328. Offset    Size    Description
  4329.  00h    WORD    type of name
  4330.         0064h organization
  4331.         00C8h group
  4332.         012Ch item
  4333.  02h    WORD    pointer to ASCIZ input name
  4334.  04h    WORD    pointer to 64-byte buffer for output name
  4335. --------N-610007BX0008-----------------------
  4336. INT 61 - Banyan VINES - ENUMERATE StreetTalk NAMES
  4337.     AX = 0007h
  4338.     BX = 0008h
  4339.     DS:DX -> enumerate block (see below)
  4340. Return: AX = status
  4341.         0000h successful
  4342.         0411h all matching names have been returned
  4343.         0412h some groups unavailable, all available matches returned
  4344. Note:    each program using this call should continue until a nonzero status
  4345.       is returned; otherwise, some resources will not be freed for several
  4346.       hours
  4347. SeeAlso: AX=0007h/BX=0007h
  4348.  
  4349. Format of enumerate block:
  4350. Offset    Size    Description
  4351.  00h    WORD    return code
  4352.  02h    WORD    pointer to pattern string
  4353.  04h    WORD    enumerate type
  4354.         0064h organization
  4355.         00C8h group
  4356.         012Ch item
  4357.  06h    WORD    enumerate class
  4358.         0000h unspecified (return all matching items)
  4359.         0001h user names
  4360.         0002h service names
  4361.         0003h list names
  4362.         0004h nicknames
  4363.  08h    WORD    pointer to category criteria block (see below) or 0
  4364.  0Ah    WORD    pointer to array of 64-byte returned names
  4365.  0Ch    WORD    number of names returned
  4366.  0Eh  6 BYTEs    reserved for subsequent enumerated calls (set to zeros on first
  4367.           call)
  4368.  
  4369. Format of category criteria block:
  4370. Offset    Size    Description
  4371.  00h    WORD    exclude flag
  4372.         0000h return only items with the specified categories
  4373.         0001h return all items except those with the given categories
  4374.  02h    WORD    number of categories
  4375.  04h    WORD    category 1 value
  4376.  06h    WORD    category 2 value
  4377.         ...
  4378.  
  4379. Values for common service categories:
  4380.  0002h    file service
  4381.  0003h    print service
  4382.  0004h    mail service
  4383.  0005h    StreetTalk
  4384.  0006h    time service
  4385.  0008h    semaphore service
  4386.  0009h    3270/SNA service
  4387.  000Ah    asynchronous terminal emulation service
  4388.  000Ch    NETBIOS service
  4389.  000Dh    PC-based service
  4390. --------V-610008-----------------------------
  4391. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - SET ZOOM OFFSET
  4392.     AX = 0008h
  4393.     BX = X start of zoom offset
  4394.     CX = Y start of zoom offset
  4395. Desc:    specifies the first byte of video memory to appear in the zoom window
  4396. Notes:    INT 61 is the default interrupt; the actual interrupt number can be
  4397.       obtained by calling INT 16/AH=FFh
  4398.     not all vendors include the Tseng TSR which supports these functions
  4399. SeeAlso: AX=0000h"OPTIMA",AX=0006h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  4400. --------N-610008BX0002-----------------------
  4401. INT 61 - Banyan VINES - POST MESSAGE ON LOCAL DISPLAY
  4402.     AX = 0008h
  4403.     BX = 0002h
  4404.     CX = flags
  4405.         bit 0: message will remain on screen until user presses ^X
  4406.         bit 1: ring bell after displaying message
  4407.         bit 2: blink
  4408.     DS:DX -> ASCIZ string to display (only first 80 chars used)
  4409. Return: AX = status
  4410.         0000h successful
  4411.         000Bh message display function currently busy
  4412.         000Ch message queue full
  4413. Note:    queues up to three messages to be displayed on the bottom line
  4414. SeeAlso: AX=0008h/BX=0003h
  4415. --------N-610008BX0003-----------------------
  4416. INT 61 - Banyan VINES - INTERCEPT VINES 25th-LINE MESSAGES AT LOCAL PC
  4417.     AX = 0008h
  4418.     BX = 0003h
  4419.     DS:DX -> request block
  4420. Return: AX = status
  4421.         0000h successful
  4422.         0001h network software not installed or incompatible
  4423. Notes:    message handler should not call BIOS or DOS functions, and should
  4424.       either call next handler or simply return
  4425.     to stop intercepting messages, set prev and next request blocks to
  4426.       point at each other
  4427. SeeAlso: AX=0008h/BX=0002h
  4428.  
  4429. Format of request block:
  4430. Offset    Size    Description
  4431.  00h    DWORD    pointer to user-written message handler
  4432.  04h    DWORD    pointer to next request block (filled in by VINES)
  4433.  08h    DWORD    pointer to previous request block (filled in by VINES)
  4434.  0Ch    DWORD    pointer to message storage area (filled by VINES) (see below)
  4435.  
  4436. Format of message storage area:
  4437. Offset    Size    Description
  4438.  00h 16 BYTEs    IPC port of message sender (see AX=0001h#"Sosock")
  4439.  10h    BYTE    message flags
  4440.  11h    WORD    reserved
  4441.  13h    BYTE    length of message
  4442.  14h 80 BYTEs    message text
  4443. --------N-61000A-----------------------------
  4444. INT 61 - Banyan VINES - SECONDARY 3270 INTERFACE
  4445.     AX = 000Ah
  4446. Note:    either 3270/SNA or 3270/BSC interface will use AX=000Ah, depending on
  4447.       which is loaded second.  The first interface loaded will use AX=0002h
  4448. SeeAlso: INT 61/AX=0002h
  4449. --------N-6101-------------------------------
  4450. INT 61 - Banyan VINES - CHECK SERVICE
  4451.     AH = 01h
  4452.     AL = service ID (see below)
  4453. Return: AX = status
  4454.         0000h installed
  4455.         0001h not installed
  4456.         0002h invalid ID
  4457.  
  4458. Values for service ID:
  4459.  01h    communications
  4460.  02h    primary 3270 emulation
  4461.  03h    async terminal emulation
  4462.  04h    file deflection
  4463.  07h    StreetTalk
  4464.  08h    environment
  4465.  0Ah    secondary 3270 emulation
  4466.  0Bh    semaphore service
  4467.  0Ch    3270 emulation active status
  4468.  0Dh    3270 keyboard interrupt simulator
  4469. --------N-6101--BX0000-----------------------
  4470. INT 61 u - PC/TCP kernel v2.1+ - "net_config" - CONFIGURE RUNNING KERNEL
  4471.     AH = 01h
  4472.     BX = 0000h
  4473.     DH = tag number
  4474.     DL = device number
  4475.     DS:SI -> buffer to send to kernel
  4476.     ES:DI -> integer containing size of buffer
  4477. Return: CF clear if successful
  4478.     CF set on error
  4479.         AX = error code (see INT 61"PC/TCP")
  4480. Notes:    there are a large number of tags available; the items returned
  4481.       all refer to local kernel configuration, and are not needed in
  4482.       normal use.
  4483.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  4484. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=02"PC/TCP"
  4485. --------N-6102-------------------------------
  4486. INT 61 - Banyan VINES - GET REVISION NUMBER
  4487.     AH = 02h
  4488.     DS:DX -> 2-byte buffer for result
  4489. Return: AX = 0000h installed
  4490.         DS:DX buffer contains revision number as
  4491.         10000d * major_ver + 100d * minor_ver + patch_revision
  4492. --------N-6102--BX0000-----------------------
  4493. INT 61 u - PC/TCP kernel v2.1+ - "get_kernel_info" - GET MISCELLAN LOCAL INFO
  4494.     AH = 02h
  4495.     BX = 0000h
  4496.     DH = tag number
  4497.     DL = device number
  4498.     DS:SI -> buffer for result (up to 48 bytes for version <= 2.2)
  4499.     ES:DI -> integer containing size of buffer
  4500. Return: CF clear if successful
  4501.         Data loaded into specified buffer, and size value altered
  4502.     CF set on error
  4503.         AX = error code (see INT 61"PC/TCP")
  4504. Notes:    there are a large number of tags available; the items returned
  4505.       all refer to local kernel configuration, and are not needed in
  4506.       normal use.
  4507.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  4508. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=01h"PC/TCP"
  4509. --------N-6105-------------------------------
  4510. INT 61 - PC/TCP kernel v2.05+ - "get_addr" - GET INTERNET ADDRESS OF NET DESCR
  4511.     AH = 05h
  4512.     BX = network descriptor
  4513. Return: CF clear if successful
  4514.         DX:AX = Internet address of ND
  4515.     CF set on error
  4516.         AX = error code (see INT 61"PC/TCP")
  4517. Notes:    the installation check consists of testing for the signature "TCPTSR"
  4518.       three bytes beyond the start of the interrupt handler
  4519.     INT 61 is the default; PC/TCP v2.05 may be configured to use any
  4520.       interrupt from 20h through E0h
  4521. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=16h"PC/TCP"
  4522. SeeAlso: INT 63/AH=25h"BW-TCP"
  4523. --------N-6106-------------------------------
  4524. INT 61 - PC/TCP kernel v2.05 - "net_info" - GET INTERFACE STATISTICS
  4525.     AH = 06h
  4526.     BX = network descriptor (must be allocated and open)
  4527.     DS:SI -> 38-byte buffer (see below)
  4528. Return: CF clear if successful
  4529.         buffer filled
  4530.     CF set on error
  4531.         AX = error code (see INT 61"PC/TCP")
  4532. Desc:    returns the statistics relevant to the particular network interface
  4533.        used by the specified network descriptor
  4534. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=05h"PC/TCP"
  4535.  
  4536. Format of buffer:
  4537. Offset    Size    Description
  4538.  00h    WORD    interface class (e.g. 802.3)
  4539.  02h    WORD    type (manufacturer) of interface
  4540.  04h    WORD    interface number
  4541.  06h    DWORD    (big-endian) IP address of interface
  4542.  0Ah    DWORD    subnet mask
  4543.  0Eh    WORD    0001h if interface is up
  4544.  10h    DWORD    total packets received
  4545.  14h    DWORD    total packets sent
  4546.  18h    DWORD    receive errors
  4547.  1Ch    DWORD    send errors
  4548.  20h    WORD    length of local net address (e.g. 0006h for Ethernet)
  4549.  22h    DWORD    pointer to local net address
  4550. --------N-6107-------------------------------
  4551. INT 61 - PC/TCP kernel v2.05+ - "net_globalize" - MAKE NET DESCRIPTOR GLOBAL
  4552.     AH = 07h
  4553.     BX = local network descriptor
  4554. Return: CF clear if successful
  4555.         AX = global network descriptor
  4556.     CF set on error
  4557.         AX = error code (see INT 61"PC/TCP")
  4558. Notes:    the new network descriptor can be accessed from all processes and is
  4559.       independent of DOS
  4560.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  4561. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
  4562. SeeAlso: INT 61/AH=29h
  4563. --------N-6108-------------------------------
  4564. INT 61 - PC/TCP kernel v2.05+ - "net_release" - CLOSE A NETWORK DESCRIPTOR
  4565.     AH = 08h
  4566.     BX = network descriptor
  4567. Return: CF clear if successful
  4568.         AX = 0000h (BWPCTCP shim)
  4569.     CF set on error
  4570.         AX = error code (see INT 61"PC/TCP")
  4571. Note:    the descriptor will be closed and resources released.  If a stream
  4572.       descriptor, the protocol (FIN etc) is completed unless the
  4573.       non-blocking option has been set.
  4574. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=09h"PC/TCP"
  4575. SeeAlso: INT 63/AH=0Eh"BW-TCP"
  4576. --------N-6109-------------------------------
  4577. INT 61 - PC/TCP kernel v2.05+ - "net_releaseall" - CLOSE ALL NON-GLOBAL DESCRS
  4578.     AH = 09h
  4579. Return: CF clear
  4580. Notes:    this call performs function 08h on every non-global network descriptor.
  4581.       Global descriptors must be released individually.
  4582.     INT 61 is the default; PC/TCP v2.05 may be configured to use any
  4583.       interrupt from 20h through E0h
  4584. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
  4585. SeeAlso: INT 63/AH=0Eh"BW-TCP"
  4586. --------N-610A-------------------------------
  4587. INT 61 - PC/TCP kernel v2.05 - "net_send" - ???
  4588.     AH = 0Ah
  4589.     ???
  4590. Return: ???
  4591. Notes:    this function is described as "unused" in the v2.05 and v2.2
  4592.       documentation
  4593.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  4594. SeeAlso: AH=0Bh
  4595. --------N-610B-------------------------------
  4596. INT 61 - PC/TCP kernel v2.05 - "net_sendto" - ???
  4597.     AH = 0Bh
  4598.     ???
  4599. Return: ???
  4600. Notes:    this function is described as "unused" in the v2.05 and v2.2
  4601.       documentation
  4602.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  4603. SeeAlso: AH=0Ah
  4604. --------N-610C-------------------------------
  4605. INT 61 u - PC/TCP kernel v2.05+ - "net_stat" - GET CONNECTION STATISTICS
  4606.     AH = 0Ch
  4607.     BX = network descriptor or one of the following:
  4608.         FFFCh for kernel ICMP statistics
  4609.         FFFDh for kernel UDP statistics
  4610.         FFFEh for kernel IP statistics
  4611.         FFFFh for kernel TCP statistics
  4612.     DS:DX -> 64-byte buffer
  4613. Return: CF clear if successful
  4614.         buffer filled
  4615.     CF set on error
  4616.         AX = error code (see INT 61"PC/TCP")
  4617. Notes:    the fields filled in for a network descriptor depend on the protocol
  4618.       family used by that descriptor's connection
  4619.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  4620. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  4621.  
  4622. Format of kernel TCP statistics:
  4623. Offset    Size    Description
  4624.  00h 16 BYTEs    unused
  4625.  10h    DWORD    bytes sent
  4626.  14h    DWORD    bytes received
  4627.  18h  8 BYTEs    unused
  4628.  20h    DWORD    packets sent
  4629.  24h    DWORD    packets received
  4630.  28h    DWORD    bad checksums
  4631.  2Ch    DWORD    count of window ignored by remote
  4632.  30h    DWORD    timeouts
  4633.  34h    DWORD    resets
  4634.  38h    DWORD    duplicate packets
  4635.  3Ch    DWORD    retransmits
  4636.  
  4637. Format of kernel IP statistics:
  4638. Offset    Size    Description
  4639.  00h  8 BYTEs    unused
  4640.  08h    DWORD    invalid IP header length errors
  4641.  0Ch    DWORD    protocol errors (unwanted packets)
  4642.  10h    DWORD    duplicate fragments received
  4643.  14h    DWORD    bad fragments received
  4644.  18h    DWORD    security errors
  4645.  1Ch    DWORD    count of bad IP addresses received
  4646.  20h    DWORD    packets sent
  4647.  24h    DWORD    packets received
  4648.  28h    DWORD    bad checksums received
  4649.  2Ch    DWORD    total IP protocol errors
  4650.  30h    DWORD    fragmentation errors
  4651.  34h    DWORD    IP packets discarded + bad security + bad fragments
  4652.  38h    DWORD    fragments received
  4653.  3Ch  4 BYTEs    unused
  4654.  
  4655. Format of kernel UDP statistics:
  4656. Offset    Size    Description
  4657.  00h 28 BYTEs    unused
  4658.  1Ch    DWORD    packets dropped for lack of buffers
  4659.  20h    DWORD    packets sent
  4660.  24h    DWORD    packets received
  4661.  28h    DWORD    bad checksums
  4662.  2Ch    DWORD    port not listening errors
  4663.  30h  4 BYTEs    unused
  4664.  34h    DWORD    truncated receives
  4665.  38h  8 BYTEs    unused
  4666.  
  4667. Format of kernel ICMP statistics:
  4668. Offset    Size    Description
  4669.  00h    DWORD    "TimeEx" sent
  4670.  04h    DWORD    "TimeEx" received
  4671.  08h    DWORD    "ParamProb" sent
  4672.  0Ch    DWORD    "ParamProb" received
  4673.  10h    DWORD    redirects received
  4674.  14h    DWORD    source quenches received
  4675.  18h    DWORD    ICMP Echo Requests ("ping") sent
  4676.  1Ch    DWORD    ICMP Echo Requests received
  4677.  20h    DWORD    packets sent
  4678.  24h    DWORD    packets received
  4679.  28h    DWORD    bad packets received
  4680.  2Ch    DWORD    "DestUn" received
  4681.  30h    DWORD    packet send errors
  4682.  34h    DWORD    "DestUn" sent
  4683.  38h    DWORD    ICMP Echo replies received
  4684.  3Ch    DWORD    ICMP Echo replies sent
  4685. --------N-610D-------------------------------
  4686. INT 61 - PC/TCP kernel v2.05+ - "is_netnd" - CHECK IF NETWORK DESCRIPTOR VALID
  4687.     AH = 0Dh
  4688.     BX = possible network descriptor
  4689. Return: CF clear if valid
  4690.     CF set on error
  4691.         AX = error code (see INT 61"PC/TCP")
  4692. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
  4693. SeeAlso: INT 61/AH=22h
  4694. --------N-610E-------------------------------
  4695. INT 61 - PC/TCP kernel v2.05+ - "net_select" - DETECT READINESS OF NETWORK
  4696.     AH = 0Eh
  4697.     BX = maximum value of network descriptor for which to return info
  4698.     DS:DX -> 32-bit (max) array of bit flags for read readiness
  4699.     ES:DI -> 32-bit (max) array of bit flags for write readiness
  4700. Return: CF clear
  4701. Notes:    bits in the DS:DX buffer are set if the corresponding network
  4702.       descriptor may be read without blocking; bits in the ES:DI buffer
  4703.       are set if the corresponding network descriptor may be written
  4704.       without blocking.  This implies that the network descriptor has
  4705.       opened correctly and the protocol initialized.
  4706.     the installation check consists of testing for the signature "TCPTSR"
  4707.       three bytes beyond the start of the interrupt handler
  4708.     INT 61 is the default; PC/TCP v2.05 may be configured to use any
  4709.       interrupt from 20h through E0h
  4710. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  4711. --------N-610F-------------------------------
  4712. INT 61 - PC/TCP kernel v2.05+ - "get_netversion" - GET SOFTWARE VERSION
  4713.     AH = 0Fh
  4714. Return: CF clear
  4715.     AX = version (AH = major, AL = minor)
  4716.     BX = patch level
  4717. Notes:    patch levels are no longer used starting with version 2.10; instead,
  4718.       the minor version level is incremented.
  4719.     Beame&Whiteside's BWPCTCP v3.0a shim reports version 2.05, but does not
  4720.       set BX
  4721. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  4722. --------N-6110-------------------------------
  4723. INT 61 - PC/TCP kernel v2.05+ - "net_shutdown" - UNINSTALL
  4724.     AH = 10h
  4725. Return: CF clear if successful
  4726.     CF set on error
  4727.         AX = error code (see INT 61"PC/TCP")
  4728. Note:    this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  4729. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  4730. --------N-6111-------------------------------
  4731. INT 61 - PC/TCP kernel v2.05+ - "disable_async" - DISABLE ASYNCHRONOUS HANDLERS
  4732.     AH = 11h
  4733. Return: CF clear
  4734.     AX = previous state
  4735.         0000h async calls were already disabled
  4736.         else  async calls were enabled
  4737. SeeAlso: INT 61"PC/TCP",INT 61/AH=12h
  4738. --------N-6112-------------------------------
  4739. INT 61 - PC/TCP kernel v2.05+ - "enable_async" - ENABLE ASYNCHRONOUS HANDLERS
  4740.     AH = 12h
  4741. Return: CF clear
  4742.     AX = previous state
  4743.         0000h async calls were disabled
  4744.         else  async calls were already enabled
  4745. SeeAlso: INT 61"PC/TCP",INT 61/AH=11h
  4746. --------N-6113-------------------------------
  4747. INT 61 - PC/TCP kernel v2.05 - "net_connect" - OPEN A NETWORK CONNECTION
  4748.     AH = 13h
  4749.     BX = network descriptor (FFFFh for automatic net_getdesc)
  4750.     DX = protocol (see below)
  4751.     DS:SI -> buffer for "addr" structure (see below)
  4752. Return: CF clear if successful
  4753.         AX = network descriptor used or allocated
  4754.     CF set on error
  4755.         AX = error code (see INT 61"PC/TCP")
  4756. Notes:    invokes AH=22h if BX=FFFFh on entry; also invokes AH=19h in various
  4757.       cases
  4758.     will wait for protocol on stream connections unless non-blocking was
  4759.       set with AH=20h
  4760. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=18h,INT 61/AH=23h
  4761. SeeAlso: INT 63/AH=14h"BW-TCP"
  4762.  
  4763. Values for protocol:
  4764.  0001h    raw net (undocumented)
  4765.  0002h    raw IP
  4766.  0003h    datagram (UDP)
  4767.  0004h    stream (TCP)
  4768.  0005h    raw ICMP
  4769.  
  4770. Format of structure "addr":
  4771. Offset    Size    Description
  4772.  00h    DWORD    Internet address (network order)
  4773.  04h    WORD    remote socket number (network order)
  4774.  06h    WORD    local socket number (network order) 0000h means "you choose"
  4775.  08h    BYTE    protocol (see above)
  4776. --------N-6114-------------------------------
  4777. INT 61 Ou - PC/TCP kernel v2.05 - "net_recv" - NO LONGER SUPPORTED
  4778.     AH = 14h
  4779.     BX = network descriptor
  4780. Return: CF set
  4781.         AX = 0018h (see INT 61"PC/TCP")
  4782. Notes:    displays error message "Illegal system call!  Please upgrade your
  4783.       PCserver software" to standard output
  4784.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  4785. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=0Ah,INT 61/AH=15h
  4786. --------N-6115-------------------------------
  4787. INT 61 - PC/TCP kernel v2.05 - "net_recvfrom" - ???
  4788.     AH = 15h
  4789.     ???
  4790. Return: ???
  4791. Notes:    this function is described as "unused" in the v2.2 documentation
  4792.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  4793. SeeAlso: INT 61/AH=0Bh,INT 61/AH=14h
  4794. --------N-6116-------------------------------
  4795. INT 61 - PC/TCP kernel v2.05+ - "net_peer" - GET DATA ON REMOTE PEER
  4796.     AH = 16h
  4797.     BX = network descriptor
  4798.     DS:DX -> 9-byte buffer for "addr" structure (see AH=13h)
  4799. Return: CF clear if successful
  4800.         buffer filled
  4801.     CF set on error
  4802.         AX = error code (see INT 61"PC/TCP")
  4803. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  4804. --------N-6117-------------------------------
  4805. INT 61 - PC/TCP kernel v2.05+ - "net_reconfig" - RE-READ KERNEL CONFIGURATION
  4806.     AH = 17h
  4807. Return: CF clear if successful
  4808.     CF set on error
  4809.         AX = error code (see INT 61"PC/TCP")
  4810. Notes:    this routine is deprecated in v2.1+ and will eventually be withdrawn;
  4811.       in v2.1+, this function calls AH=01h which should be used instead
  4812.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  4813. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=01h"PC/TCP"
  4814. --------N-6118-------------------------------
  4815. INT 61 - PC/TCP kernel v2.05+ - "net_eof" - CLOSE TRANSMIT SIDE OF CONNECTION
  4816.     AH = 18h
  4817.     BX = network descriptor
  4818. Return: CF clear if successful
  4819.     CF set on error
  4820.         AX = error code (see INT 61"PC/TCP")
  4821. Note:    a TCP "FIN" command is sent and no further data may be transmitted,
  4822.       although the connection remains open
  4823. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=13h"PC/TCP"
  4824. SeeAlso: INT 63/AH=0Eh"BW-TCP"
  4825. --------N-6119-------------------------------
  4826. INT 61 - PC/TCP kernel v2.05+ - "net_abort" - RESET A NETWORK CONNECTION
  4827.     AH = 19h
  4828.     BX = network descriptor
  4829. Return: CF clear if successful
  4830.     CF set on error
  4831.         AX = error code (see INT 61"PC/TCP")
  4832. Desc:    immediately destroys the specified connection
  4833. Note:    send a TCP "RST" command if a stream connection is open
  4834. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=24h
  4835. --------N-611A-------------------------------
  4836. INT 61 - PC/TCP kernel v2.05+ - "net_write" - WRITE TO THE NETWORK
  4837.     AH = 1Ah
  4838.     BX = network descriptor
  4839.     CX = number of bytes to transmit (0000h allowed)
  4840.     DX = send options (see below)
  4841.     DS:SI -> data to be written
  4842. Return: CF clear if successful
  4843.         AX = number of bytes actually written
  4844.         DX = ???
  4845.     CF set on error
  4846.         AX = error code (see INT 61"PC/TCP")
  4847. Notes:    the installation check consists of testing for the signature "TCPTSR"
  4848.       three bytes beyond the start of the interrupt handler
  4849.     INT 61 is the default; PC/TCP v2.05 may be configured to use any
  4850.       interrupt from 20h through E0h
  4851. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Bh,INT 61/AH=1Ch
  4852. SeeAlso: INT 63/AH=19h"BW-TCP",INT 63/AH=1Bh"BW-TCP"
  4853.  
  4854. Bitfields for send options:
  4855.  bit 0    signal "URG"ent data
  4856.  bit 3    attempt rerouting on non-stream calls if first attempt fails
  4857.  bit 4    send data with PUSH flag (no override of Nagle)
  4858.     (see option 0Ch)
  4859.  bit 5    fail rather than truncating datagram
  4860.  bit 6    fail rather than blocking
  4861.  bit 7    broadcast packet
  4862. --------N-611B-------------------------------
  4863. INT 61 - PC/TCP kernel v2.05+ - "net_read" - READ FROM THE NETWORK
  4864.     AH = 1Bh
  4865.     BX = network descriptor
  4866.     CX = maximum number of bytes to read
  4867.     DX = receive options (see below)
  4868.     DS:SI -> buffer for data
  4869.     ES:DI -> "addr" structure (see AH=13h) for remote from which to read
  4870.         0000h:0000h for any
  4871. Return: CF clear if successful
  4872.         AX = number of bytes actually read
  4873.         DX = ???
  4874.     CF set on error
  4875.         AX = error code (see INT 61"PC/TCP")
  4876. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Ah,INT 61/AH=1Dh
  4877.  
  4878. Bitfields for receive options:
  4879.  bit 1    do not remove data from queue, just copy it
  4880.  bit 2    do not copy data, just remove it from queue
  4881.  bit 5    fail if datagram would be truncated
  4882.  bit 6    do not block, return error if no data available
  4883. Note:    special case for UDP: if both bits 1 and 2 set, return num of datagrams
  4884. --------N-611C-------------------------------
  4885. INT 61 - PC/TCP kernel v2.05+ - "net_writeto" - WRITE A DATAGRAM
  4886.     AH = 1Ch
  4887.     BX = network descriptor
  4888.     CX = number of bytes to transmit (0000h allowed)
  4889.     DX = send options (see AH=1Ah)
  4890.     DS:SI -> data to be written
  4891.     ES:DI -> "addr" structure (see AH=13h)
  4892. Return: CF clear if successful
  4893.         AX = number of bytes actually written
  4894.         DX = ???
  4895.     CF set on error
  4896.         AX = error code (see INT 61"PC/TCP")
  4897. Note:    this function differs from AH=1Ah in that the address and socket
  4898.       numbers can be overridden
  4899. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Ah,INT 61/AH=1Dh
  4900. SeeAlso: INT 63/AH=21h"BW-TCP"
  4901. --------N-611D-------------------------------
  4902. INT 61 - PC/TCP kernel v2.05+ - "net_readfrom" - READ A DATAGRAM
  4903.     AH = 1Dh
  4904.     BX = network descriptor
  4905.     CX = maximum number of bytes to read
  4906.     DX = receive options (see AH=1Bh)
  4907.     DS:SI -> buffer for received data
  4908.     ES:DI -> 9-byte buffer containing "addr" structure (see AH=13h)
  4909. Return: CF clear if successful
  4910.         AX = number of bytes read
  4911.         DX = ???
  4912.     CF set on error
  4913.         AX = error code (see INT 61"PC/TCP")
  4914. Notes:    this function can read from any host or a designated host depending
  4915.       on settings in the "addr" structure
  4916.     only for use with datagram or Raw descriptors
  4917. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Bh,INT 61/AH=1Ch
  4918. --------N-611E-------------------------------
  4919. INT 61 - PC/TCP kernel v2.05+ - "net_flush" - FLUSH PENDING DATA
  4920.     AH = 1Eh
  4921.     BX = network descriptor
  4922. Return: CF clear if successful
  4923.     CF set on error
  4924.         AX = error code (see INT 61"PC/TCP")
  4925. Notes:    bufferred data is transmitted immediately, overriding Nagle's algorithm
  4926.       if necessary
  4927.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  4928. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  4929. --------N-611F-------------------------------
  4930. INT 61 - PC/TCP kernel v2.05+ - "net_asynch" - SET UP ASYNCHRONOUS CALL-BACK
  4931.     AH = 1Fh
  4932.     BX = network descriptor
  4933.     CX = event type (see below)
  4934.     DS:SI -> event handler routine
  4935.     ES:DI = 32-bit hint passed to handler
  4936. Return: CF clear if successful
  4937.         DS:DX -> previous handler
  4938.     CF set on error
  4939.         AX = error code (see INT 61"PC/TCP")
  4940. Note:    ICMP messages do not trigger events on stream connections
  4941. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  4942.  
  4943. Values for event type:
  4944.  00h    alarm
  4945.  01h    open (successfully opened stream connection)
  4946.  02h    receive (data available)
  4947.  03h    transmit (ACK received on stream connection)
  4948.  04h    transmit flush???
  4949.  05h    foreign close (remote host closed data connection)
  4950.  06h    close (local host closed connection and protocol is complete)
  4951.  07h    error (error code passed to handler as arg)
  4952.  
  4953. Event handler called with:
  4954.     BX = network descriptor
  4955.     CX = event type (see above)
  4956.     DS:DX -> arg
  4957.     ES:DI = 32-bit hint value
  4958.     STACK:    small stack, possibly the DOS stack
  4959. --------N-6120-------------------------------
  4960. INT 61 - PC/TCP kernel v2.05+ - "set_option" - SET AN OPTION ON A DESCRIPTOR
  4961.     AH = 20h
  4962.     BX = network descriptor
  4963.     CX = length of buffer (usually 04h)
  4964.     DS:DX -> buffer containing option
  4965.     SI = (ignored by v2.2-)
  4966.     DI = option to set (see below)
  4967. Return: CF clear if successful
  4968.     CF set on error
  4969.         AX = error code (see INT 61"PC/TCP")
  4970. Note:    Beame&Whiteside's BWPCTCP shim only supports options 01h and 0Bh; all
  4971.       others return CF clear
  4972. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=21h
  4973.  
  4974. Values for option to set:
  4975.  01h    set non-blocking mode if non-zero
  4976.  02h    timeout of call in milliseconds
  4977.  03h    user-defined 4-byte magic cookie (not used by kernel)
  4978.  04h    TCP window or UDP buffer count (WORD, unsigned)
  4979.  06h    do TCP keep-alives if non-zero
  4980.  09h    (v2.1+) set IP precedence
  4981.  0Ah    (v2.1+) set IP type of service
  4982.  0Bh    use a privileged port if port = 0
  4983.  0Ch    turn off TCP PUSH bit and don't flush buffer every write (see AH=1Ah)
  4984. Note:    use "C" true or false values for boolean options
  4985. --------N-6121-------------------------------
  4986. INT 61 - PC/TCP kernel v2.05+ - "get_option" - GET OPTIONS APPLIED TO NET DESCR
  4987.     AH = 21h
  4988.     BX = network descriptor
  4989.     CX = length of buffer
  4990.     DS:DX -> buffer for return values
  4991.     SI = 0004h (ignored by v2.2-)
  4992.     DI = option (see AH=20h)
  4993. Return: CF clear if successful
  4994.         DS:DX -> value (usually 32 bits) returned by selected option
  4995.     CF set on error
  4996.         AX = error code (see INT 61"PC/TCP")
  4997. Note:    this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  4998. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=20h
  4999. --------N-6122-------------------------------
  5000. INT 61 u - PC/TCP kernel v2.05+ - "net_getdesc" - ALLOCATE NETWORK DESCRIPTOR
  5001.     AH = 22h
  5002. Return: CF clear if successful
  5003.         AX = network descriptor
  5004.     CF set on error
  5005.         AX = error code (see INT 61"PC/TCP")
  5006. Note:    the descriptor will be an integer in the range 00h-1Fh, and a DOS call
  5007.       is made to allocate this as a file descriptor.  Hence a number may
  5008.       not refer to a PC/TCP network descriptor and a DOS file handle
  5009.       simultaneously.
  5010. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=13h,INT 61/AH=29h
  5011. --------N-6123-------------------------------
  5012. INT 61 - PC/TCP kernel v2.05+ - "net_listen" - LISTEN FOR INCOMING CONNECTIONS
  5013.     AH = 23h
  5014.     BX = network descriptor or FFFFh to allocate descriptor
  5015.     DX = type of service
  5016.     DS:SI -> "addr" structure (see AH=13h)
  5017. Return: CF clear if successful
  5018.         AX = network descriptor
  5019.     CF set on error
  5020.         AX = error code (see INT 61"PC/TCP")
  5021. Notes:    type of service and "addr" structure are as for AH=13h
  5022.     any of the address structure can be zero; normally local socket number
  5023.       is filled in prior to call
  5024. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=13h
  5025. SeeAlso: INT 63/AH=12h"BW-TCP"
  5026. --------N-6124-------------------------------
  5027. INT 61 - PC/TCP kernel v2.05+ - "net_abortall" - RESET ALL NETWORK CONNECTIONS
  5028.     AH = 24h
  5029. Return: always successful
  5030. Note:    performs "net_abort" (AH=19h) on all open non-global descriptors
  5031. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=19h
  5032. --------N-6125-------------------------------
  5033. INT 61 - PC/TCP kernel v2.05+ - "ad_res_name" - GET HOST NAME GIVEN ADDRESS
  5034.     AH = 25h
  5035.     DX,BX = IP address in network order
  5036.     CX = length of buffer for name
  5037.     DS:SI -> buffer for host name
  5038. Return: CF clear if successful
  5039.        buffer filled with ASCIZ host name
  5040.     CF set on error
  5041.         AX = error code (see INT 61"PC/TCP")
  5042. Note:    this function will use the host table and or DNS to resolve the
  5043.       address, depending on kernel configuration.  Use this call for the
  5044.       normal gethostbyaddr function.
  5045. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=26h,INT 61/AH=27h
  5046. --------N-6126-------------------------------
  5047. INT 61 - PC/TCP kernel v2.05+ - "ad_htable" - GET HOST NAME FROM LOCAL TABLE
  5048.     AH = 26h
  5049.     DX,BX = IP address in network order
  5050.     CX = length of buffer
  5051.     DS:SI -> buffer for host name
  5052. Return: CF clear if successful
  5053.         buffer filled with ASCIZ host name
  5054.     CF set on error
  5055.         AX = error code (see INT 61"PC/TCP")
  5056. Notes:    normally one would use AH=25h instead of this function
  5057.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  5058. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=25h,INT 61/AH=27h
  5059. --------N-6127-------------------------------
  5060. INT 61 - PC/TCP kernel v2.05+ - "ad_domain" - GET HOST NAME FROM DNS
  5061.     AH = 27h
  5062.     DX,BX = IP address in network order
  5063.     CX = length of buffer
  5064.     DS:SI -> buffer for host name
  5065. Return: CF clear if successful
  5066.         buffer filled with ASCIZ host name
  5067.     CF set on error
  5068.         AX = error code (see INT 61"PC/TCP")
  5069. Note:    normally one would use AH=25h instead of this function
  5070. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=25h,INT 61/AH=26h
  5071. --------N-6128-------------------------------
  5072. INT 61 - PC/TCP kernel v2.05+ - "net_swap" - EXCHANGE TWO NETWORK DESCRIPTORS
  5073.     AH = 28h
  5074.     BX = network descriptor 1
  5075.     CX = network descriptor 2
  5076. Return: CF clear if successful
  5077.     CF set on error
  5078.         AX = error code (see INT 61"PC/TCP")
  5079. Note:    the two descriptors will exchange places; both must be local or both
  5080.       global
  5081. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5082. --------N-6129-------------------------------
  5083. INT 61 - PC/TCP kernel v2.05+ - "net_getglobdesc" - ALLOCATE GLOBAL DESCRIPTOR
  5084.     AH = 29h
  5085. Return: CF clear if successful
  5086.         AX = network descriptor
  5087.     CF set on error
  5088.         AX = error code (see INT 61"PC/TCP")
  5089. Note:    use this function rather than AH=22h to avoid a DOS call by the PC/TCP
  5090.       kernel; the returned descriptor will be >= 40h and cannot be used
  5091.       with "net_select" (AH=0Eh)
  5092. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=07h"PC/TCP"
  5093. SeeAlso: INT 61/AH=22h
  5094. --------N-612A-------------------------------
  5095. INT 61 - PC/TCP kernel v2.05+ - GET CONFIGURATION INFORMATION
  5096.     AH = 2Ah
  5097.     DS:SI -> 26-byte buffer for configuration information (see below)
  5098. Return: CF clear
  5099.     AX = 0000h
  5100.     buffer filled
  5101. Notes:    size of buffer may vary with kernel version; 26 bytes is the size for
  5102.       versions 2.05 through 2.2
  5103.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  5104. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5105.  
  5106. Format of configuration information:
  5107. Offset    Size    Description
  5108.  00h    BYTE    maximum TCP connections available
  5109.  01h    BYTE    maximum UDP connections available
  5110.  02h    BYTE    maximum IP connections available
  5111.  03h    BYTE    maximum Raw Net connections available
  5112.  04h    BYTE    number of TCP connections currently in use
  5113.  05h    BYTE    number of UDP connections currently in use
  5114.  06h    BYTE    number of IP connections currently in use
  5115.  07h    BYTE    number of Raw Net connections currently in use
  5116.  08h    WORD    number of local network descriptors active
  5117.  0Ah    WORD    number of global network descriptors active
  5118.  0Ch    BYTE    maximum header size on network
  5119.  0Dh    BYTE    maximum trailer size on network
  5120.  0Eh    WORD    size of large packet buffer
  5121.  10h    WORD    number of network interfaces attached
  5122.  12h    DWORD    milliseconds since kernel started
  5123.  16h    DWORD    IP broadcast address
  5124. --------N-612B-------------------------------
  5125. INT 61 - PC/TCP kernel v2.02+ - "net_alarm" - SET TIMED ASYNCHRONOUS EVENT
  5126.     AH = 2Bh
  5127.     BX = network descriptor
  5128.     CX,DX = time before alarm in milliseconds
  5129.     DS:SI -> handler which will receive call (see INT 61/AH=1Fh)
  5130.     ES:DI = 32-bit cookie passed to handler
  5131. Return: CF clear if successful
  5132.     CF set on error
  5133.         AX = error code (see INT 61"PC/TCP")
  5134. Notes:    this function will case a NET_AS_ALARM to be generated; it is intended
  5135.       for TSRs, etc. to regain control periodically
  5136.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  5137. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5138. --------N-6130-------------------------------
  5139. INT 61 - PC/TCP kernel v2.05+ - "icmp_ping" - SEND ICMP ECHO REQUEST (PING)
  5140.     AH = 30h
  5141.     BX,DX = IP address of host
  5142.     CX = length of data to send
  5143. Return: CF clear if successful (i.e. reply received)
  5144.     CF set on error
  5145.         AX = error code (see INT 61"PC/TCP")
  5146. Note:    this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  5147. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  5148. --------N-61---------------------------------
  5149. INT 61 u - PC/TCP kernel v2.05 - NOP for SLIP kernel
  5150.     AH = function
  5151.         31h "net_add_route"
  5152.         32h "net_del_route"
  5153.         33h "net_dump_routes"
  5154. Notes:    these functions are described as "unused" in the v2.2 documentation
  5155.     router configuration can be altered using INT 61/AH=01h
  5156.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  5157. --------N-6134-------------------------------
  5158. INT 61 U - PC/TCP kernel v2.1+ - "icmp_destun" - ???
  5159.     AH = 34h
  5160.     ???
  5161. Return: ???
  5162. Notes:    this function is described as "reserved" in the v2.2 documentation
  5163.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  5164. --------N-6150-------------------------------
  5165. INT 61 - PC/TCP kernel v2.05+ - "nm_prs_addr" - TRANSLATE NUMERICAL IP ADDRESS
  5166.     AH = 50h
  5167.     DS:DX -> ASCIZ IP address as "dotted quad" (max 127 chars)
  5168. Return: CF clear if successful
  5169.         DX:AX -> IP address
  5170.     CF set on error
  5171.         AX = error code (see INT 61"PC/TCP")
  5172. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  5173. --------N-6151-------------------------------
  5174. INT 61 - PC/TCP kernel v2.05+ - "nm_htable" - RESOLVE NAME USING HOST TABLE
  5175.     AH = 51h
  5176.     CX = size of destination buffer
  5177.     DS:DX -> ASCIZ host name (max 127 chars)
  5178.     ES:DI -> destination buffer or 0000h:0000h
  5179. Return: CF clear if successful
  5180.         DX:AX -> IP address of host
  5181.         destination buffer filled with canonical host name
  5182.     CF set on error
  5183.         AX = error code (see INT 61"PC/TCP")
  5184. Note:    this function calls DOS, and can fail if the DOS call fails
  5185. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  5186. --------N-6152-------------------------------
  5187. INT 61 - PC/TCP kernel v2.05+ - "nm_domain" - RESOLVE NAME USING DNS
  5188.     AH = 52h
  5189.     CX = size of destination buffer
  5190.     DS:DX -> ASCIZ host name (max 127 chars)
  5191.     ES:DI -> destination buffer or 0000h:0000h
  5192. Return: CF clear if successful
  5193.         DX:AX -> IP address of host
  5194.         destination buffer filled with canonical host name
  5195.     CF set on error
  5196.         AX = error code (see INT 61"PC/TCP")
  5197. Note:    this function will poll all configured domain name servers if necessary
  5198. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  5199. --------N-6153-------------------------------
  5200. INT 61 - PC/TCP kernel v2.05- - "nm_ien116" - RESOLVE HOST NAME USING IEN116
  5201.     AH = 53h
  5202.     DS:DX -> ASCIZ name to be resolved (max 127 chars)
  5203. Return: CF clear if successful
  5204.         DX:AX -> IP address of host
  5205.     CF set on error
  5206.         AX = error code (see INT 61"PC/TCP")
  5207. Note:    this function is not supported by v2.10+
  5208. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  5209. --------N-6154-------------------------------
  5210. INT 61 - PC/TCP kernel v2.05+ - "nm_res_name" - RESOLVE HOST NAME
  5211.     AH = 54h
  5212.     CX = size of destination buffer
  5213.     DS:DX -> ASCIZ host name (max 127 chars)
  5214.     ES:DI -> destination buffer or 0000h:0000h
  5215. Return: CF clear if successful
  5216.         DX:AX -> IP address of host
  5217.         destination buffer filled with canonical host name
  5218.     CF set on error
  5219.         AX = error code (see INT 61"PC/TCP")
  5220. Note:    this function uses all configured methods in turn to resolve the
  5221.       name (numerical, then host table, then DNS, then IEN116)
  5222. BUG:    the SLIP kernel for v2.05 bounds-checks the wrong register, so values
  5223.       greater than 54h in AH may crash the system.    Other kernels may have
  5224.       this bug as well; it has been fixed in the v2.2 SLIPDRV kernel.
  5225. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=50h,INT 61/AH=51h
  5226. SeeAlso: INT 61/AH=52h,INT 61/AH=53h
  5227. --------*-62---------------------------------
  5228. INT 62 - reserved for user interrupt
  5229. --------d-62---------------------------------
  5230. INT 62 - Adaptec and OMTI controllers - DRIVE 0 DATA
  5231. Notes:    this vector stores the third four bytes of the parameter table for
  5232.       hard disk 0
  5233. SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 63"Adaptec"
  5234. --------b-62---------------------------------
  5235. INT 62 - HP 95LX - USED BY CALCULATOR
  5236. SeeAlso: INT 60"HP 95LX"
  5237. ----------62---------------------------------
  5238. INT 62 - MS SQL Server/Sybase DBLIBRARY interface - ???
  5239.     AH = function (00h to 07h)
  5240.     CX = FFFEh
  5241.     DX = FFFFh
  5242.     ???
  5243. Return: ???
  5244. Note:    the installation check consists of testing for the string "DBLIBRARY"
  5245.       2 bytes past the interrupt handler
  5246. SeeAlso: AH=08h"SQL"
  5247. Index:    installation check;MS SQL Server|installation check;Sybase DBLIBRARY
  5248. --------N-62---------------------------------
  5249. INT 62 - BW-TCP - HARDWARE DRIVER (ETHDEV.SYS) - API
  5250.     AH = function
  5251.         00h get physical hardware address
  5252.         DS:DX -> 6-byte buffer for address
  5253.         Return: AX = length of hardware address???
  5254.         01h NOP for ETHDEV.ODI
  5255.         02h initialize
  5256.         03h get real IP address
  5257.         DS:SI -> DWORD buffer for IP address
  5258.         04h set ???
  5259.         BX = ???
  5260.         ES:SI -> FAR routine for ???
  5261.         05h ???
  5262.         06h ???
  5263.         07h ???
  5264.         DS:SI -> ???
  5265.         08h ???
  5266.         CX = ???
  5267.         ES:SI -> func08 buffer
  5268.         09h hook timer interrupt
  5269.         Return: AX = handler ID if successful
  5270.         0Ah unhook timer interrupt
  5271.         DX = handler ID
  5272.         0Bh add ???
  5273.         AL = ???
  5274.         DX = ???
  5275.         BP = ???
  5276.         ES:SI -> ???
  5277.         0Ch remove ???
  5278.         DX = ???
  5279.         BP = ???
  5280.         0Dh NOP for ETHDEV.ODI
  5281.         0Eh begin critical section
  5282.         0Fh end critical section
  5283.         10h query critical section
  5284.         Return: CF clear if no critical section active
  5285.             CF set if in critical section
  5286.         11h set ???
  5287.         ES:SI -> ???
  5288.         Return: CF clear
  5289.         12h get ?
  5290.         Return: AX = ??? (memory variable incremented after reading)
  5291.         13h ???
  5292.         CX = ???
  5293.         Return: AL = 00h if CF clear
  5294.         14h ???
  5295.         ES:SI -> ???
  5296.         Return: AL = 00h if CF clear
  5297.         15h get ??? (call after reading ETHDEV27 device)
  5298.         Return: AX = ??? (destroyed???)
  5299.         16h ???
  5300.         17h ???
  5301.         DX = segment of ???
  5302.         Return: Cf clear
  5303.         18h allocate and map EMS for driver
  5304.         Note: calls function 17h after EMS allocated and mapped
  5305.         FEh map EMS
  5306.         00h map in driver's memory
  5307.         01h map out driver's memory
  5308. Return: CF clear if successful
  5309.     CF set on error
  5310.         AL = error code
  5311. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  5312.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  5313.       consecutive interrupt (64h by default) if it is loaded
  5314. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  5315.  
  5316. Format of func08 buffer:
  5317. Offset    Size    Description
  5318.  00h  6 BYTEs    hardware address???
  5319.  06h  6 BYTEs    ???
  5320.  0Ch    WORD    ???
  5321.  0Eh    WORD    ???
  5322. --------V-620000-----------------------------
  5323. INT 62 u - FGDRIVER v1.10 - "FG_GETMODE" - GET CURRENT VIDEO MODE NUMBER
  5324.     AX = 0000h
  5325.     ES:BX -> ???
  5326. Return: AX = current video mode number
  5327. Notes:    FGDRIVER is the external video driver for the shareware
  5328.       Fastgraph/Light by Ted Gruber Software
  5329.     the installation check consists of testing for the signature "FG" ten
  5330.       bytes beyond the start of the interrupt handler
  5331. SeeAlso: AX=0001h,AX=0006h
  5332. Index:    installation check;Fastgraph/Light
  5333. --------V-620001-----------------------------
  5334. INT 62 u - FGDRIVER v1.10 - "FG_SETMODE" - SELECT VIDEO MODE AND INITIALIZE
  5335.     AX = 0001h
  5336.     BX = new video mode or FFFFh for current mode
  5337.     ES:DX -> ???
  5338. Notes:    video modes are the same as the BIOS video modes except for
  5339.         0Bh Hercules graphics 720x348
  5340.         0Ch Hercules graphics 320x200
  5341.         15h VGA graphics 320x400x256
  5342.         16h VGA graphics 320x240x256
  5343.         17h VGA graphics 320x480x256
  5344.     this call resets the active video page to page 0000h, the clipping
  5345.       region to the entire screen, text rows to 25, etc.
  5346. SeeAlso: AX=0000h,AX=0002h,INT 10/AH=00h
  5347. --------V-620002-----------------------------
  5348. INT 62 u - FGDRIVER v1.10 - "FG_TESTMODE" - CHECK IF VIDEO MODE AVAILABLE
  5349.     AX = 0002h
  5350.     BX = desired video mode (00h-17h)
  5351.     CX = required number of video pages (ignore memory size if <= 0)
  5352. Return: AX = status
  5353.         0000h mode not available with requested number of pages
  5354.         0001h mode is available
  5355. SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0005h
  5356. --------V-620003-----------------------------
  5357. INT 62 u - FGDRIVER v1.10 - "FG_BESTMODE" - GET BEST VIDEO MODE GIVEN RESOLUTN
  5358.     AX = 0003h
  5359.     BX = horizontal resolution
  5360.     CX = vertical resolution
  5361.     DX = number of video pages required (both physical and virtual)
  5362. Return: AX = proposed video mode number or FFFFh if no matching video mode
  5363. SeeAlso: AX=0002h,AX=0004h
  5364. --------V-620004-----------------------------
  5365. INT 62 u - FGDRIVER v1.10 - "FG_AUTOMODE" - GET VIDEO MODE WITH MOST FEATURES
  5366.     AX = 0004h
  5367. Return: AX = proposed video mode number
  5368. Note:    FGDRIVER is the external video driver for the shareware
  5369.       Fastgraph/Light by Ted Gruber Software
  5370. SeeAlso: AX=0002h,AX=0003h,AX=0005h
  5371. --------V-620005-----------------------------
  5372. INT 62 u - FGDRIVER v1.10 - "FG_EGACHECK" - GET INFO ABOUT ACTIVE EGA DISPLAY
  5373.     AX = 0005h
  5374. Return: AX = number of 64K banks of video memory, or 0000h if no EGA or EGA
  5375.         without an Enhanced Color Display
  5376. SeeAlso: AX=0002h,AX=0003h
  5377. --------V-620006-----------------------------
  5378. INT 62 u - FGDRIVER v1.10 - "FG_RESET" - ERASE SCREEN AND RESTORE SCREEN ATTR
  5379.     AX = 0006h
  5380. Notes:    this call is ignored in graphics modes
  5381.     the screen attributes are only restored if ANSI.SYS is loaded
  5382. SeeAlso: AX=0000h
  5383. --------V-620007-----------------------------
  5384. INT 62 u - FGDRIVER v1.10 - "FG_CURSOR" - SPECIFY WHETHER TEXT CURSR IS VISIBLE
  5385.     AX = 0007h
  5386.     BX = new state (0000h invisible, 0001h visible)
  5387. Note:    this call is ignored in text modes
  5388. --------V-620008-----------------------------
  5389. INT 62 - FGDRIVER v1.10 - UNUSED
  5390.     AX = 0008h to 0009h
  5391. Return: AX = 0000h
  5392. --------V-62000A-----------------------------
  5393. INT 62 u - FGDRIVER v1.10 - "FG_GETMAXX" - GET MAXIMUM COLUMN IN SCREEN SPACE
  5394.     AX = 000Ah
  5395. Return: AX = maximum X coordinate in screen space
  5396.         (or character space if in text mode)
  5397. SeeAlso: AX=000Bh,AX=0045h
  5398. --------V-62000B-----------------------------
  5399. INT 62 u - FGDRIVER v1.10 - "FG_GETMAXY" - GET MAXIMUM ROW IN SCREEN SPACE
  5400.     AX = 000Bh
  5401. Return: AX = maximum Y coordinate in screen space
  5402.         (or character space if in text mode)
  5403. SeeAlso: AX=000Ah,AX=0045h
  5404. --------V-62000C-----------------------------
  5405. INT 62 u - FGDRIVER v1.10 - "FG_XALPHA" - CONVERT SCREEN COLUMN TO CHAR COLUMN
  5406.     AX = 000Ch
  5407.     BX = screen space column
  5408. Return: AX = character space column containing specified coordinate
  5409. SeeAlso: AX=000Dh,AX=000Eh
  5410. --------V-62000D-----------------------------
  5411. INT 62 u - FGDRIVER v1.10 - "FG_YALPHA" - CONVERT SCREEN ROW TO CHARACTER ROW
  5412.     AX = 000Dh
  5413.     BX = screen space row
  5414. Return: AX = character space row containing specified coordinate
  5415. SeeAlso: AX=000Ch,AX=000Fh
  5416. --------V-62000E-----------------------------
  5417. INT 62 u - FGDRIVER v1.10 - "FG_XCONVERT" - CONVERT CHAR COLUMN TO SCREEN COL
  5418.     AX = 000Eh
  5419.     BX = character space column
  5420. Return: AX = screen space column of leftmost pixel in specified character col
  5421. SeeAlso: AX=000Ch,AX=000Fh
  5422. --------V-62000F-----------------------------
  5423. INT 62 u - FGDRIVER v1.10 - "FG_YCONVERT" - CONVERT CHARACTER ROW TO SCREEN ROW
  5424.     AX = 000Fh
  5425.     BX = character space row
  5426. Return: AX = screen space row of topmost pixel in specified character row
  5427. SeeAlso: AX=000Dh,AX=000Eh
  5428. --------V-620010-----------------------------
  5429. INT 62 u - FGDRIVER v1.10 - "FG_GETLINES" - GET TEXT ROWS FOR CURR VIDEO MODE
  5430.     AX = 0010h
  5431. Return: AX = number of text rows on screen in current video mode
  5432. SeeAlso: AX=0011h
  5433. --------V-620011-----------------------------
  5434. INT 62 u - FGDRIVER v1.10 - "FG_SETLINES" - SET TEXT ROWS ON SCREEN
  5435.     AX = 0011h
  5436.     BX = new screen size (25, 43, 50)
  5437. SeeAlso: AX=0010h
  5438. --------V-620012-----------------------------
  5439. INT 62 - FGDRIVER v1.10 - UNUSED
  5440.     AX = 0012h to 0013h
  5441. Return: AX = 0000h
  5442. --------V-620014-----------------------------
  5443. INT 62 u - FGDRIVER v1.10 - "FG_DEFCOLOR" - ASSIGN COLOR VALUE TO COLOR INDEX
  5444.     AX = 0014h
  5445.     BX = color index (0000h-00FFh)
  5446.     CX = new color value (0 to maximum color value for current video mode)
  5447. Note:    this call is ignored in text modes and 256-color graphics modes
  5448. SeeAlso: AX=0015h,AX=0016h,AX=001Dh
  5449. --------V-620015-----------------------------
  5450. INT 62 u - FGDRIVER v1.10 - "FG_GETCOLOR" - GET CURRENT TEXT ATTRIBUTE
  5451.     AX = 0015h
  5452. Return: AX = current text attribute or color index (graphics modes)
  5453. Note:    FGDRIVER is the external video driver for the shareware
  5454.       Fastgraph/Light by Ted Gruber Software
  5455. SeeAlso: AX=0019h,AX=001Ah
  5456. --------V-620016-----------------------------
  5457. INT 62 u - FGDRIVER v1.10 - "FG_GETINDEX" - GET COLOR VALUE FOR COLOR INDEX
  5458.     AX = 0016h
  5459.     BX = color index (0000h to 00FFh)
  5460. Return: AX = color value for specified color index
  5461. Note:    this call returns the value passed to it in text and 256-color
  5462.       graphics modes
  5463. SeeAlso: AX=0014h,AX=001Ch
  5464. --------V-620017-----------------------------
  5465. INT 62 u - FGDRIVER v1.10 - "FG_PALETTE" - SET PALETTE / SET VIDEO DAC REGISTER
  5466.     AX = 0017h
  5467. ---CGA 4-color graphics---
  5468.     BX = CGA paletee number
  5469.     CX = background color
  5470. ---CGA 2-color graphics---
  5471.     BX ignored
  5472.     CX = foreground color
  5473. ---16-color graphics---
  5474.     BX = palette register number
  5475.     CX = palette value
  5476. ---256-color graphics---
  5477.     BX = DAC register number
  5478.     CX =  DAC value
  5479. Notes:    ignored in text modes and Hercules graphics modes
  5480.     few EGA/VGA adapters correctly set the foreground color in CGA mode 6
  5481. SeeAlso: AX=0018h,AX=001Dh
  5482. --------V-620018-----------------------------
  5483. INT 62 u - FGDRIVER v1.10 - "FG_PALETTES" - SET ALL PALETTE REGISTERS
  5484.     AX = 0018h
  5485.     ES:BX -> array of 16 WORDs containing values for palette registers
  5486.         (or first 16 DAC registers in 256-color modes)
  5487. Note:    ignored in text modes, CGA and Hercules graphics modes
  5488. SeeAlso: AX=0017h
  5489. --------V-620019-----------------------------
  5490. INT 62 u - FGDRIVER v1.10 - "FG_SETATTR" - SET TEXT-MODE CHARACTER ATTRIBUTE
  5491.     AX = 0019h
  5492.     BX = foreground
  5493.     CX = background
  5494.     DX = blink (0000h nonblinking, 0001h blink)
  5495. Note:    this call is ignored in graphics modes
  5496. SeeAlso: AX=0015h,AX=001Ah,AX=0037h
  5497. --------V-62001A-----------------------------
  5498. INT 62 u - FGDRIVER v1.10 - "FG_SETCOLOR" - SET CURRENT COLOR
  5499.     AX = 001Ah
  5500.     BX = new color index (or text attribute in text modes)
  5501. SeeAlso: AX=0015h,AX=0019h
  5502. --------V-62001B-----------------------------
  5503. INT 62 u - FGDRIVER v1.10 - "FG_SETRGB" - SET VIDEO DAC REGISTER CONTENTS
  5504.     AX = 001Bh
  5505.     BX = palette or DAC register number
  5506.     CX = red color component
  5507.     DX = green component
  5508.     SI = blue component
  5509. Notes:    the register number may be negative for Tandy, PCjr, and 200-line
  5510.       EGA graphics modes to specify an intense color
  5511.     this call has no effect in text, CGA graphics, and Hercules graphics
  5512.       modes
  5513. SeeAlso: AX=001Ch,AX=00A5h
  5514. --------V-62001C-----------------------------
  5515. INT 62 u - FGDRIVER v1.10 - "FG_GETRGB" - GET VIDEO DAC REGISTER CONTENTS
  5516.     AX = 001Ch
  5517.     ES:BX -> variable pointer record (see below)
  5518.     CX = DAC register number
  5519. Return: variables updated
  5520. Note:    this call is ignored in text modes and CGA/EGA video modes (since
  5521.       they do not use DAC registers)
  5522. SeeAlso: AX=001Bh,AX=001Dh,AX=00A4h
  5523.  
  5524. Format of variable pointer record:
  5525. Offset    Size    Description
  5526.  00h    WORD    segment of WORD buffer for red component of DAC register
  5527.  02h    WORD    offset of WORD buffer for red component
  5528.  04h    WORD    segment of WORD buffer for green component of DAC register
  5529.  06h    WORD    offset of WORD buffer for green component
  5530.  08h    WORD    segment of WORD buffer for blue component of DAC register
  5531.  0Ah    WORD    offset of WORD buffer for blue component
  5532. --------V-62001D-----------------------------
  5533. INT 62 u - FGDRIVER v1.10 - "FG_MAPRGB" - MAP COLOR COMPONENTS INTO PALETTE VAL
  5534.     AX = 001Dh
  5535.     BX = red component
  5536.     CX = green component
  5537.     DX = blue component
  5538. Return: AX = mode-specific palette value corresponding to specified components
  5539. Note:    only meaningful in 16-color graphics modes
  5540. SeeAlso: AX=0015h,AX=0017h
  5541. --------V-62001E-----------------------------
  5542. INT 62 u - FGDRIVER v1.10 - "FG_ERASE" - CLEAR THE ACTIVE VIDEO PAGE
  5543.     AX = 001Eh
  5544. Note:    sets each pixel to 0 in graphics modes, each character cell to a blank
  5545.       with a gray foreground attribute in text modes
  5546. --------V-62001F-----------------------------
  5547. INT 62 u - FGDRIVER v1.10 - "FG_POINT" - DISPLAY A PIXEL
  5548.     AX = 001Fh
  5549.     BX = column
  5550.     CX = row
  5551. Note:    this call is ignored in text modes
  5552. SeeAlso: AX=0020h
  5553. --------V-620020-----------------------------
  5554. INT 62 u - FGDRIVER v1.10 - "FG_GETPIXEL" - GET COLOR OF SPECIFIED PIXEL
  5555.     AX = 0020h
  5556.     BX = column in screen space
  5557.     CX = row in screen space
  5558. Return: AX = color value of pixel (0 to num_colors-1)
  5559.         0000h in text modes
  5560. SeeAlso: AX=001Fh
  5561. --------V-620021-----------------------------
  5562. INT 62 u - FGDRIVER v1.10 - "FG_GETXPOS" - GET GRAPHICS CURSOR COLUMN
  5563.     AX = 0021h
  5564. Return: AX = screen space X coordinate of graphics cursor position
  5565. SeeAlso: AX=0022h,AX=0023h,AX=0024h
  5566. --------V-620022-----------------------------
  5567. INT 62 u - FGDRIVER v1.10 - "FG_GETXPOS" - GET GRAPHICS CURSOR ROW
  5568.     AX = 0022h
  5569. Return: AX = screen space Y coordinate of graphics cursor position
  5570. SeeAlso: AX=0021h,AX=0023h,AX=0024h
  5571. --------V-620023-----------------------------
  5572. INT 62 u - FGDRIVER v1.10 - "FG_MOVE" - SET GRAPHICS CURSOR POSITION
  5573.     AX = 0023h
  5574.     BX = new column
  5575.     CX = new row
  5576. Note:    this call is ignored in text modes
  5577. SeeAlso: AX=0021h,AX=0022h,AX=0024h
  5578. --------V-620024-----------------------------
  5579. INT 62 u - FGDRIVER v1.10 - "FG_MOVEREL" - ADJUST GRAPHICS CURSOR POSITION
  5580.     AX = 0024h
  5581.     BX = column offset
  5582.     CX = row offset
  5583. Note:    this call is ignored in text modes
  5584. SeeAlso: AX=0021h,AX=0022h,AX=0023h
  5585. --------V-620025-----------------------------
  5586. INT 62 u - FGDRIVER v1.10 - "FG_DRAW" - DRAW SOLID LINE TO ABSOLUTE POSITION
  5587.     AX = 0025h
  5588.     BX = endpoint column
  5589.     CX = endpoint row
  5590. Notes:    this call is ignored in text modes
  5591.     the starting point is the current graphics cursor position; the cursor
  5592.       position is updated
  5593. SeeAlso: AX=0026h,AX=0027h
  5594. --------V-620026-----------------------------
  5595. INT 62 u - FGDRIVER v1.10 - "FG_DRAWREL" - DRAW SOLID LINE TO RELATIVE POSITION
  5596.     AX = 0026h
  5597.     BX = endpoint column offset
  5598.     CX = endpoint row offset
  5599. Notes:    this call is ignored in text modes
  5600.     the starting point is the current graphics cursor position; the cursor
  5601.       position is updated
  5602. SeeAlso: AX=0025h,AX=0028h
  5603. --------V-620027-----------------------------
  5604. INT 62 u - FGDRIVER v1.10 - "FG_DASH" - DRAW DASHED LINE TO ABSOLUTE POSITION
  5605.     AX = 0027h
  5606.     BX = endpoint column
  5607.     CX = endpoint row
  5608.     DX = dash pattern (set bits cause drawn pixels)
  5609. Notes:    this call is ignored in text modes
  5610.     the starting point is the current graphics cursor position; the cursor
  5611.       position is updated
  5612. SeeAlso: AX=0025h,AX=0028h
  5613. --------V-620028-----------------------------
  5614. INT 62 u - FGDRIVER v1.10 - "FG_DASHREL" - DRAW DASHED LINE TO RELATVE POSITION
  5615.     AX = 0028h
  5616.     BX = endpoint column offset
  5617.     CX = endpoint row offset
  5618.     DX = dash pattern (set bits cause drawn pixels)
  5619. Notes:    this call is ignored in text modes
  5620.     the starting point is the current graphics cursor position; the cursor
  5621.       position is updated
  5622. SeeAlso: AX=0026h,AX=0027h
  5623. --------V-620029-----------------------------
  5624. INT 62 u - FGDRIVER v1.10 - "FG_SETCLIP" - SET CLIPPING REGION
  5625.     AX = 0029h
  5626.     BX = left edge of clipping region
  5627.     CX = right edge of clipping region
  5628.     DX = top edge of clipping region
  5629.     SI = bottom edge of clipping region
  5630. SeeAlso: AX=004Ah,AX=004Ch,AX=0052h,AX=0054h
  5631. --------V-62002A-----------------------------
  5632. INT 62 u - FGDRIVER v1.10 - "FG_RECT" - DRAW UNFILLED RECTANGLE IN SCREEN SPACE
  5633.     AX = 002Ah
  5634.     BX = left edge column
  5635.     CX = right edge column
  5636.     DX = top edge row
  5637.     SI = bottom edge row
  5638. SeeAlso: AX=002Bh,AX=002Ch,AX=002Eh,AX=00A2h
  5639. --------V-62002B-----------------------------
  5640. INT 62 u - FGDRIVER v1.10 - "FG_CLPRECT" - DRAW FILLED RECTANGLE IN SCREEN SPCE
  5641.     AX = 002Bh
  5642.     BX = screen space column of left edge
  5643.     CX = screen space column of right edge
  5644.     DX = screen space row of top edge
  5645.     SI = screen space row of bottom edge
  5646. Note:    this call is ignored in text modes
  5647. SeeAlso: AX=002Ah,AX=002Ch,AX=00A2h
  5648. --------V-62002C-----------------------------
  5649. INT 62 u - FGDRIVER v1.10 - "FG_DRECT" - DRAW DITHERED RECTANGLE IN SCRN SPACE
  5650.     AX = 002Ch
  5651.     BX = screen space column of left edge
  5652.     CX = screen space column of right edge
  5653.     DX = screen space row of top edge
  5654.     SI = screen space row of bottom edge
  5655.     ES:DI -> dithering matrix (video-mode dependent)
  5656. Note:    this call is ignored in text modes
  5657. SeeAlso: AX=002Bh,AX=00A2h
  5658. --------V-62002D-----------------------------
  5659. INT 62 u - FGDRIVER v1.10 - "FG_ELLIPSE" - DRAW UNFILLED ELLIPSE IN SCRN SPACE
  5660.     AX = 002Dh
  5661.     BX = horizontal semi-axis length in screen space units
  5662.     CX = vertical semi-axis length in screen space units
  5663. Notes:    this call is ignored in text modes
  5664.     the ellipse is centered at the current graphics cursor position
  5665. SeeAlso: AX=002Ah,AX=002Eh,AX=00A2h
  5666. --------V-62002E-----------------------------
  5667. INT 62 u - FGDRIVER v1.10 - "FG_POLYGON" - DRAW AN UNFILLED POLYGON
  5668.     AX = 002Eh
  5669.     CX = number of vertices in polygon
  5670.     ES:BX -> variable pointer record (see below)
  5671. SeeAlso: AX=002Dh,AX=0030h,AX=00A2h
  5672.  
  5673. Format of variable pointer record:
  5674. Offset    Size    Description
  5675.  00h    WORD    segment of WORD array containing vertex columns
  5676.  02h    WORD    offset of WORD array containing vertex columns
  5677.  04h    WORD    segment of WORD array containing vertex rows
  5678.  06h    WORD    offset of WORD array containing vertex rows
  5679. --------V-62002F-----------------------------
  5680. INT 62 u - FGDRIVER v1.10 - "FG_PAINT" - FLOOD CLOSED REGION WITH COLOR
  5681.     AX = 002Fh
  5682.     BX = column
  5683.     CX = row
  5684. Notes:    fills an arbitrary closed region around the specified point with the
  5685.       current color; the screen edges are not considered region boundaries
  5686.     ignored in text modes
  5687. --------V-620030-----------------------------
  5688. INT 62 u - FGDRIVER v1.10 - "FG_CIRCLE" - DRAW UNFILLED CIRCLE
  5689.     AX = 0030h
  5690.     BX = radius in horizontal screen space units (> 0)
  5691. Notes:    the circle is drawn in screen space, centered at the current graphics
  5692.       cursor position
  5693.     this call is ignored in text modes
  5694. SeeAlso: AX=00A2h
  5695. --------V-620031-----------------------------
  5696. INT 62 - FGDRIVER v1.10 - UNUSED
  5697.     AX = 0031h
  5698. Return: AX = 0000h
  5699. --------V-620032-----------------------------
  5700. INT 62 u - FGDRIVER v1.10 - "FG_TEXT" - DISPLAY STRING OF CHARACTERS
  5701.     AX = 0032h
  5702.     CX = length of string
  5703.     ES:BX -> string
  5704. Notes:    the string is displayed staring at the text cursor position using the
  5705.       current text attribute (text modes) or color index (graphics modes)
  5706.     the text cursor position is updated after this call
  5707. SeeAlso: AX=001Ah,AX=0033h,AX=0035h,AX=0036h
  5708. --------V-620033-----------------------------
  5709. INT 62 u - FGDRIVER v1.10 - "FG_LOCATE" - SET TEXT-MODE CURSOR POSITION
  5710.     AX = 0033h
  5711.     BX = row
  5712.     CX = column
  5713. Note:    there are only eight text cursors shared by successive groups of
  5714.       eight video pages (pages 0, 8, 16, ... share one cursor, 1, 9, ...
  5715.       share the second, etc)
  5716. SeeAlso: AX=0034h
  5717. --------V-620034-----------------------------
  5718. INT 62 u - FGDRIVER v1.10 - "FG_WHERE" - GET CURRENT CURSOR POSITION
  5719.     AX = 0034h
  5720.     ES:BX -> variable pointers (see below)
  5721. Return: indicated variables filled with cursor row and column for active
  5722.       display
  5723. Note:    FGDRIVER is the external video driver for the shareware
  5724.       Fastgraph/Light by Ted Gruber Software
  5725. SeeAlso: AX=0033h
  5726.  
  5727. Format of variable pointers:
  5728. Offset    Size    Description
  5729.  00h    WORD    segment of WORD buffer for cursor row
  5730.  02h    WORD    offset of WORD buffer for cursor row
  5731.  04h    WORD    segment WORD buffer for cursor column
  5732.  06h    WORD    offset WORD buffer for cursor column
  5733. --------V-620035-----------------------------
  5734. INT 62 u - FGDRIVER v1.10 - "FG_CHGATTR" - APPLY CURRENT TEXT ATTRIB TO CHARS
  5735.     AX = 0035h
  5736.     BX = number of characters to recolor
  5737. Notes:    this call is ignored in graphics modes
  5738.     starting at the current text cursor position, the specified number of
  5739.       characters have their attributes to the current text attribute
  5740. SeeAlso: AX=0036h
  5741. --------V-620036-----------------------------
  5742. INT 62 u - FGDRIVER v1.10 - "FG_CHGTEXT" - DISPLAY STRING AT CURSOR POSITION
  5743.     AX = 0036h
  5744.     CX = length of string
  5745.     ES:BX -> string to be displayed
  5746. Return: text cursor updated
  5747. Note:    this call is ignored in graphics modes
  5748. SeeAlso: AX=0032h,AX=0035h
  5749. --------V-620037-----------------------------
  5750. INT 62 u - FGDRIVER v1.10 - "FG_GETATTR" - GET CHARACTER ATTRIB FOR POSITION
  5751.     AX = 0037h
  5752.     BX = row
  5753.     CX = column
  5754. Return: AX = character attribute at specified location on active video page
  5755. Note:    this call is ignored in graphics modes
  5756. SeeAlso: AX=0019h,AX=0038h
  5757. --------V-620038-----------------------------
  5758. INT 62 u - FGDRIVER v1.10 - "FG_GETCHAR" - GET CHARACTER FOR SCREEN POSITION
  5759.     AX = 0038h
  5760.     BX = row
  5761.     CX = column
  5762. Return: AX = character at specified location on active video page
  5763. Note:    this call is ignored in graphics modes
  5764. SeeAlso: AX=0037h
  5765. --------V-620039-----------------------------
  5766. INT 62 - FGDRIVER v1.10 - UNUSED
  5767.     AX = 0039h to 003Bh
  5768. Return: AX = 0000h
  5769. --------V-62003C-----------------------------
  5770. INT 62 u - FGDRIVER v1.10 - "FG_GETPAGE" - GET ACTIVE VIDEO PAGE NUMBER
  5771.     AX = 003Ch
  5772. Return: AX = active video page (0000h-003Fh)
  5773. SeeAlso: AX=003Dh,AX=003Eh,AX=0040h
  5774. --------V-62003D-----------------------------
  5775. INT 62 u - FGDRIVER v1.10 - "FG_SETPAGE" - SET ACTIVE VIDEO PAGE
  5776.     AX = 003Dh
  5777.     BX = new video page (0000h to 003Fh)
  5778. Note:    the specified page must be a physical or virtual page
  5779. SeeAlso: AX=0001h,AX=003Ch,AX=003Fh,AX=0041h
  5780. --------V-62003E-----------------------------
  5781. INT 62 u - FGDRIVER v1.10 - "FG_GETVPAGE" - GET VISIBLE VIDEO PAGE NUMBER
  5782.     AX = 003Eh
  5783. Return: AX = visible video page (0000h-003Fh)
  5784. SeeAlso: AX=003Ch,AX=003Fh,AX=0040h
  5785. --------V-62003F-----------------------------
  5786. INT 62 u - FGDRIVER v1.10 - "FG_SETVPAGE" - SET VISIBLE VIDEO PAGE
  5787.     AX = 003Fh
  5788.     BX = new video page (0000h to 003Fh)
  5789. Note:    the specified page must be a physical or virtual page
  5790. SeeAlso: AX=0001h,AX=003Dh,AX=003Eh,AX=0041h
  5791. --------V-620040-----------------------------
  5792. INT 62 u - FGDRIVER v1.10 - "FG_GETHPAGE" - GET CURRENT HIDDEN VIDEO PAGE NUM
  5793.     AX = 0040h
  5794. Return: AX = current hidden video page number (0000h-003Fh)
  5795. SeeAlso: AX=003Ch,AX=003Eh,AX=0041h
  5796. --------V-620041-----------------------------
  5797. INT 62 u - FGDRIVER v1.10 - "FG_SETHPAGE" - SET HIDDEN VIDEO PAGE
  5798.     AX = 0041h
  5799.     BX = new hidden page (0000h to 003Fh)
  5800. Note:    specified page must be a physical page or a virtual page
  5801. SeeAlso: AX=003Dh,AX=003Fh,AX=0040h
  5802. --------V-620042-----------------------------
  5803. INT 62 u - FGDRIVER v1.10 - "FG_ALLOCATE" - CREATE VIRTUAL VIDEO PAGE
  5804.     AX = 0042h
  5805.     BX = page number (0000h-003Fh)
  5806. Return: AX = status (0000h,0001h,0007h,0008h) (see below)
  5807. Notes:    FGDRIVER is the external video driver for the shareware
  5808.       Fastgraph/Light by Ted Gruber Software
  5809.     the amount of memory required by the virtual video page depends on the
  5810.       current video mode
  5811. SeeAlso: AX=0043h,AX=009Dh,AX=009Fh
  5812.  
  5813. Values for status:
  5814.  0000h    successful
  5815.  0001h    specified page is a physical or logical page
  5816.  0007h    virtual page created/released, but memory control blocks corrupted
  5817.  0008h    not enough memory
  5818.  0009h    attempt to free a page which was never created
  5819. --------V-620043-----------------------------
  5820. INT 62 u - FGDRIVER v1.10 - "FG_FREEPAGE" - FREE VIRTUAL OR LOGICAL VIDEO PAGE
  5821.     AX = 0043h
  5822.     BX = page number (0000h-003Fh)
  5823. Return: AX = status (0000h,0001h,0007h,0009h) (see AX=0042h)
  5824. SeeAlso: AX=0042h,AX=009Dh,AX=009Eh,AX=009Fh
  5825. --------V-620044-----------------------------
  5826. INT 62 u - FGDRIVER v1.10 - "FG_GETADDR" - GET SEGMENT OF ACTIVE VIDEO PAGE
  5827.     AX = 0044h
  5828. Return: AX = segment of active video page
  5829. --------V-620045-----------------------------
  5830. INT 62 u - FGDRIVER v1.10 - "FG_RESIZE" - SET GRAPHICS MODE VIDEO PAGE SIZE
  5831.     AX = 0045h
  5832.     BX = new page width in pixels
  5833.     CX = new page height in pixels
  5834. Notes:    the visible page must be set to 0000h before making this call
  5835.     mouse, joysticks, expanded memory, and extended memory must be
  5836.       reinitialized after this call
  5837. SeeAlso: AX=000Ah,AX=000Bh,AX=0075h,AX=007Ah,AX=00A0h,AX=00A1h
  5838. --------V-620046-----------------------------
  5839. INT 62 u - FGDRIVER v1.10 - "FG_GETMAP" - STORE IMAGE AS MODE-INDEPENDNT BITMAP
  5840.     AX = 0046h
  5841.     ES:BX -> buffer for video mode-independent bitmap
  5842.     CX = width of bitmap in bytes
  5843.     DX = height of bitmap in pixel rows
  5844. Return: each bit in bitmap is set if corresponding pixel is of the current
  5845.       color, cleared otherwise
  5846. Note:    this call is ignored in text modes
  5847. SeeAlso: AX=0047h,AX=0048h
  5848. --------V-620047-----------------------------
  5849. INT 62 u - FGDRIVER v1.10 - "FG_DRAWMAP" - DISPLAY MODE-INDEPENDENT BIT MAP
  5850.     AX = 0047h
  5851.     ES:BX -> bitmap (each set bit is pixel drawn in current color)
  5852.     CX = width of bitmap in bytes
  5853.     DX = height of bitmap in pixel rows
  5854. SeeAlso: AX=0046h,AX=004Ah,AX=004Dh,AX=0052h
  5855. --------V-620048-----------------------------
  5856. INT 62 u - FGDRIVER v1.10 - "FG_GETIMAGE" - STORE IMAGE AS BITMAP
  5857.     AX = 0048h
  5858.     ES:BX -> buffer for video mode-specific bitmap
  5859.     CX = width of bitmap in bytes
  5860.     DX = height of bitmap in pixel rows
  5861. SeeAlso: AX=0046h,AX=0049h,AX=0062h
  5862. --------V-620049-----------------------------
  5863. INT 62 u - FGDRIVER v1.10 - "FG_DRWIMAGE" - DISPLAY BITMAPPED IMAGE
  5864.     AX = 0049h
  5865.     ES:BX -> video mode-specific bitmap
  5866.     CX = width of bitmap in bytes
  5867.     DX = height of bitmap in pixel rows
  5868. Note:    the image will be drawn with its lower left corner at the current
  5869.       cursor position (either text or graphics)
  5870. SeeAlso: AX=0048h,AX=004Ah,AX=0062h
  5871. --------V-62004A-----------------------------
  5872. INT 62 u - FGDRIVER v1.10 - "FG_CLPIMAGE" - DISPLAY CLIPPED IMAGE (BITMAP)
  5873.     AX = 004Ah
  5874.     ES:BX -> mode-specific bitmap
  5875.     CX = width of bit map in bytes
  5876.     DX = height of bit map in pixel rows
  5877. Notes:    this call is ignored in text modes
  5878.     the image is drawn with its lower left corner at the current graphics
  5879.       cursor position
  5880.     the current clipping region is used, extended to a byte boundary
  5881. SeeAlso: AX=0029h,AX=0047h,AX=0049h,AX=004Ch,AX=0052h
  5882. --------V-62004B-----------------------------
  5883. INT 62 u - FGDRIVER v1.10 - "FG_REVIMAGE" - DISPLAY REVERSED IMAGE (BITMAP)
  5884.     AX = 004Bh
  5885.     ES:BX -> mode-specific bitmap
  5886.     CX = width of bitmap in bytes
  5887.     DX = height of bitmap in pixel rows
  5888. Notes:    this call is ignored in text modes
  5889.     the image is drawn with its lower left corner at the current graphics
  5890.       cursor position
  5891. SeeAlso: AX=004Ah,AX=004Ch
  5892. --------V-62004C-----------------------------
  5893. INT 62 u - FGDRIVER v1.10 - "FG_FLPIMAGE" - DISPLAY INV CLIPPED IMAGE (BITMAP)
  5894.     AX = 004Ch
  5895.     ES:BX -> mode-specific bitmap
  5896.     CX = width of bit map in bytes
  5897.     DX = height of bit map in pixel rows
  5898. Notes:    this call is ignored in text modes
  5899.     the image is drawn with its lower left corner at the current graphics
  5900.       cursor position
  5901.     the current clipping region is used, extended to a byte boundary
  5902. SeeAlso: AX=0029h,AX=004Ah
  5903. --------V-62004D-----------------------------
  5904. INT 62 u - FGDRIVER v1.10 - "FG_DISPLAY" - DISPLAY IMAGE (STD PIXEL RUN FORMAT)
  5905.     AX = 004Dh
  5906.     ES:BX -> pixel run map (pairs of bytes: color index, count)
  5907.     CX = number of pixel runs to display
  5908.     DX = width of image in pixels (> 0)
  5909. Notes:    this call is ignored in text modes
  5910.     the image is displayed with its lower left corner at the current
  5911.       graphics cursor position
  5912. SeeAlso: AX=0047h,AX=004Eh,AX=004Fh,AX=0050h,AX=0060h
  5913. --------V-62004E-----------------------------
  5914. INT 62 u - FGDRIVER v1.10 - "FG_DISPLAY" - DISPLAY IMAGE (PACKED PIXEL RUN FMT)
  5915.     AX = 004Eh
  5916.     ES:BX -> pixel run map (trios of bytes: colors, count1, count2; colors
  5917.         contains the color for the first run in its high nybble and the
  5918.         color for the second run in its low nybble)
  5919.     CX = number of pixel runs to display
  5920.     DX = width of image in pixels (> 0)
  5921. Notes:    this call is ignored in text modes
  5922.     the image is displayed with its lower left corner at the current
  5923.       graphics cursor position
  5924. SeeAlso: AX=004Dh,AX=004Fh,AX=0050h,AX=0060h
  5925. --------V-62004F-----------------------------
  5926. INT 62 u - FGDRIVER v1.10 - "FG_DISPFILE" - DISPLAY STORED IMAGE
  5927.     AX = 004Fh
  5928.     ES:BX -> ASCIZ filename
  5929.     CX = image width in pixels (> 0)
  5930.     DX = image format
  5931.         0000h Fastgraph standard pixel run format
  5932.         0001h packed pixel run format
  5933. Notes:    this call is ignored in text modes
  5934.     the image is displayed with its lower left corner at the current
  5935.       graphics cursor position
  5936. SeeAlso: AX=004Dh,AX=004Eh,AX=0050h,AX=0060h
  5937. --------V-620050-----------------------------
  5938. INT 62 u - FGDRIVER v1.10 - "FG_PATTERN" - SPECIFY DISPLAY PATTERN FOR COLOR
  5939.     AX = 0050h
  5940.     BX = index of pattern to define
  5941.     CX = number of predefined display pattern
  5942. Notes:    when displaying a pixel run map, Fastgraph uses the pattern associated
  5943.       with each color index rather than displaying the actual color
  5944.     this call has no effect in text and 256-color graphics modes
  5945. SeeAlso: AX=004Dh,AX=004Eh,AX=004Fh
  5946. --------V-620051-----------------------------
  5947. INT 62 u - FGDRIVER v1.10 - "FG_DRAWMASK" - DISPLAY IMAGE (MASKING MAP)
  5948.     AX = 0051h
  5949.     ES:BX -> array containing image stored as a masking map (see below)
  5950.     CX = number of pixel runs in masking map
  5951.     DX = width of masking map in pixels
  5952. Notes:    this call is ignored in text modes and in native EGA and VGA graphics
  5953.       modes
  5954.     the image is drawn with its lower left corner at the current graphics
  5955.       cursor position
  5956. SeeAlso: AX=0052h
  5957.  
  5958. Format of masking map:
  5959. Offset    Size    Description
  5960.  00h    BYTE    length of first "protect" run (pixels remain unchanged)
  5961.  01h    BYTE    length of first "zero" run (pixels set to background color)
  5962.  02h    BYTE    length of second "protect" run
  5963.  03h    BYTE    length of second "zero" run
  5964.     ...
  5965. --------V-620052-----------------------------
  5966. INT 62 u - FGDRIVER v1.10 - "FG_CLIPMASK" - DISPLAY CLIPPED IMAGE (MASKING MAP)
  5967.     AX = 0052h
  5968.     ES:BX -> array containing image stored as a masking map (see AX=0051h)
  5969.     CX = number of pixel runs in masking map
  5970.     DX = width of masking map in pixels
  5971. Notes:    this call is ignored in text modes and in native EGA and VGA graphics
  5972.       modes
  5973.     the image is drawn with its lower left corner at the current graphics
  5974.       cursor position
  5975. SeeAlso: AX=0029h,AX=004Ah,AX=0051h,AX=0053h,AX=0054h
  5976. --------V-620053-----------------------------
  5977. INT 62 u - FGDRIVER v1.10 - "FG_REVMASK" - DISPLAY REVERSED IMAGE (MASKING MAP)
  5978.     AX = 0053h
  5979.     ES:BX -> array containing image stored as a masking map (see AX=0051h)
  5980.     CX = number of pixel runs in masking map
  5981.     DX = width of masking map in pixels
  5982. Notes:    this call is ignored in text modes and in native EGA and VGA graphics
  5983.       modes
  5984.     the image is drawn with its lower left corner at the current graphics
  5985.       cursor position
  5986. SeeAlso: AX=0052h,AX=0054h
  5987. --------V-620054-----------------------------
  5988. INT 62 u - FGDRIVER v1.10 - "FG_FLIPMASK" - DISPLAY INV CLIPPED IMAGE (MASKMAP)
  5989.     AX = 0054h
  5990.     ES:BX -> array containing image stored as a masking map (see AX=0051h)
  5991.     CX = number of pixel runs in masking map
  5992.     DX = width of masking map in pixels
  5993. Notes:    this call is ignored in text modes and in native EGA and VGA graphics
  5994.       modes
  5995.     the image is drawn with its lower left corner at the current graphics
  5996.       cursor position
  5997. SeeAlso: AX=0029h,AX=0052h,AX=0053h
  5998. --------V-620055-----------------------------
  5999. INT 62 - FGDRIVER v1.10 - UNUSED
  6000.     AX = 0055h to 0059h
  6001. Return: AX = 0000h
  6002. --------V-62005A-----------------------------
  6003. INT 62 u - FGDRIVER v1.10 - "FG_SAVE" - COPY REGION FROM VISIBLE TO HIDDEN PAGE
  6004.     AX = 005Ah
  6005.     BX = left edge column
  6006.     CX = right edge column
  6007.     DX = top edge row
  6008.     SI = bottom edge row
  6009. Note:    left and right edges are adjusted to byte boundaries if necessary
  6010. SeeAlso: AX=005Bh
  6011. --------V-62005B-----------------------------
  6012. INT 62 u - FGDRIVER v1.10 - "FG_RESTORE" - COPY REGION FROM HIDDEN TO VIS PAGE
  6013.     AX = 005Bh
  6014.     BX = left edge column
  6015.     CX = right edge column
  6016.     DX = top edge row
  6017.     SI = bottom edge row
  6018. Note:    left and right edges are adjusted to byte boundaries if necessary
  6019. SeeAlso: AX=005Ah,AX=0064h
  6020. --------V-62005C-----------------------------
  6021. INT 62 u - FGDRIVER v1.10 - "FG_TRANSFER" - COPY REGION
  6022.     AX = 005Ch
  6023.     CX = source video page
  6024.     DX = destination video page
  6025.     ES:BX -> copy record (see below)
  6026. Note:    source and destination regions must not overlap if on the same page
  6027. SeeAlso: AX=005Dh,AX=005Fh
  6028.  
  6029. Format of copy record:
  6030. Offset    Size    Description
  6031.  00h    WORD    left edge column of source region
  6032.  02h    WORD    right edge column of source region
  6033.  04h    WORD    top edge row of source region
  6034.  06h    WORD    bottom edge row of source region
  6035.  08h    WORD    left edge of destination
  6036.  0Ah    WORD    bottom edge of destination
  6037. --------V-62005D-----------------------------
  6038. INT 62 u - FGDRIVER v1.10 - "FG_TCXFER" - COPY REGION EXCLUDING TRANSPARENT
  6039.     AX = 005Dh
  6040.     CX = source video page
  6041.     DX = destination video page
  6042.     ES:BX -> copy record (see AX=005Ch)
  6043. Notes:    pixels which are in any of the colors defined as transparent with
  6044.       AX=005Eh are left unchanged in the destination region
  6045.     source and destination regions must not overlap if on the same page
  6046.     this call is ignored in text modes
  6047. SeeAlso: AX=005Ch,AX=005Eh
  6048. --------V-62005E-----------------------------
  6049. INT 62 u - FGDRIVER v1.10 - "FG_TCMASK" - SET TRANSPARENT COLORS
  6050.     AX = 005Eh
  6051.     BX = colors to consider transparent (bit 0 = color 0, etc)
  6052. Notes:    this call is ignored in text modes
  6053.     the specified colors are considered transparent by AX=005Dh
  6054. SeeAlso: AX=005Dh
  6055. --------V-62005F-----------------------------
  6056. INT 62 u - FGDRIVER v1.10 - "FG_COPYPAGE" - TRANSFER VIDEO PAGE CONTENTS
  6057.     AX = 005Fh
  6058.     BX = source page number (0000h-003Fh)
  6059.     CX = destination page number (0000h-003Fh)
  6060. Note:    if both source and destination pages are logical pages, they must both
  6061.       be located in the same type (conventional, EMS, XMS) of memory
  6062. SeeAlso: AX=005Ch,AX=009Dh,AX=009Eh,AX=009Fh
  6063. --------V-620060-----------------------------
  6064. INT 62 u - FGDRIVER v1.10 - "FG_DISPPCX" - DISPLAY PCX FILE
  6065.     AX = 0060h
  6066.     ES:BX -> ASCIZ filename
  6067.     CX = flags
  6068.         bit 0: use current palette rather than PCX file's palette
  6069.         bits 1-15 reserved (0)
  6070. Return: AX = status
  6071.         0000h success
  6072.         0001h file not found
  6073.         0002h file is not a valid PCX file
  6074. Notes:    this call is ignored in text modes and Hercules low-resolution graphics
  6075.     the image is displayed with its upper left corner at the current
  6076.       graphics cursor position
  6077. SeeAlso: AX=004Dh,AX=004Eh,AX=004Fh,AX=0061h
  6078. --------V-620061-----------------------------
  6079. INT 62 u - FGDRIVER v1.10 - "FG_MAKEPCX" - CREATE PCX FILE FROM SCREEN WINDOW
  6080.     AX = 0061h
  6081.     BX = left edge in screen space units
  6082.     CX = right edge in screen space units
  6083.     DX = top edge in screen space units
  6084.     SI = bottom edge in screen space units
  6085.     ES:DI -> ASCIZ filename of PCX file to create
  6086. Return: AX = status
  6087.         0000h successful
  6088.         0001h file not created
  6089. Notes:    the PCX file is created from the specified region of the active video
  6090.       page; the left and right edges are adjusted to a byte boundary if
  6091.       necessary
  6092.     if the specified file already exists, it is overwritten
  6093.     this call is ignored in text and Hercules low-resolution graphics modes
  6094. SeeAlso: AX=0060h
  6095. --------V-620062-----------------------------
  6096. INT 62 u - FGDRIVER v1.10 - "FG_IMAGESIZ" - DETERMINE IMAGE STORAGE REQUIREMENT
  6097.     AX = 0062h
  6098.     BX = image width in pixels
  6099.     CX = image height in pixels
  6100. Return: DX:AX = size in bytes of mode-specific bitmap for current video mode
  6101. SeeAlso: AX=0048h
  6102. --------V-620063-----------------------------
  6103. INT 62 - FGDRIVER v1.10 - UNUSED
  6104.     AX = 0063h
  6105. Return: AX = 0000h
  6106. --------V-620064-----------------------------
  6107. INT 62 u - FGDRIVER v1.10 - "FG_FADEIN" - FADE IN HIDDEN PAGE
  6108.     AX = 0064h
  6109.     BX = delay (0000h = fastest possible fade-in)
  6110. Notes:    the current hidden page is copied to the current visible page in small
  6111.       random sections to produce a fade-in effect
  6112.     this call is ignored in text modes
  6113. SeeAlso: AX=005Bh,AX=0065h
  6114. --------V-620065-----------------------------
  6115. INT 62 u - FGDRIVER v1.10 - "FG_FADEOUT" - FADE OUT TO CURRENT COLOR
  6116.     AX = 0065h
  6117.     BX = delay (0000h = fastest possible fade-out)
  6118. Notes:    this call is ignored in text modes
  6119.     the current visible page is filled with pixels of the current color in
  6120.       small random sections to give a fade-out effect
  6121. SeeAlso: AX=0064h
  6122. --------V-620066-----------------------------
  6123. INT 62 u - FGDRIVER v1.10 - "FG_PAN" - SET SCREEN ORIGIN
  6124.     AX = 0066h
  6125.     BX = new column for screen origin
  6126.     CX = new row for screen origin
  6127. SeeAlso: AX=0067h
  6128. --------V-620067-----------------------------
  6129. INT 62 u - FGDRIVER v1.10 - "FG_SCROLL" - VERTICALLY SCROLL SCREEN REGION
  6130.     AX = 0067h
  6131.     BX = left edge column
  6132.     CX = right edge column
  6133.     DX = top edge row
  6134.     SI = bottom edge row
  6135.     DI = number of pixels by which to scroll (positive scrolls up,
  6136.         negative scrolls down)
  6137.     ES = type of scroll
  6138.         0000h circular (rows scrolled off are copied to vacated rows)
  6139.         else vacated rows are filled with the current color
  6140. Notes:    in graphics modes, the left and right edges are adjusted to byte
  6141.       boundaries if necessary
  6142.     circular scrolling uses part of the hidden page as a workspace
  6143. SeeAlso: AX=0066h
  6144. --------V-620068-----------------------------
  6145. INT 62 - FGDRIVER v1.10 - UNUSED
  6146.     AX = 0068h to 006Ch
  6147. Return: AX = 0000h
  6148. --------V-62006D-----------------------------
  6149. INT 62 u - FGDRIVER v1.10 - "FG_WAITKEY" - FLUSH KEYBOARD BUFFER AND AWAIT KEY
  6150.     AX = 006Dh
  6151. Return: after next key pressed
  6152. SeeAlso: AX=006Eh,AX=006Fh,AX=0096h
  6153. --------V-62006E-----------------------------
  6154. INT 62 u - FGDRIVER v1.10 - "FG_GETKEY" - GET NEXT KEYSTROKE
  6155.     AX = 006Eh
  6156.     ES:BX -> variable pointer record (see below)
  6157. Return: (after next keystroke if no typeahead) variables updated
  6158. SeeAlso: AX=006Dh,AX=006Fh,AX=0070h
  6159.  
  6160. Format of variable pointer record:
  6161. Offset    Size    Description
  6162.  00h    WORD    segment of BYTE buffer for ASCII keycode
  6163.  02h    WORD    offset of BYTE buffer for ASCII keycode
  6164.  04h    WORD    segment of BYTE buffer for extended keycode
  6165.  06h    WORD    offset of BYTE buffer for extended keycode
  6166. --------V-62006F-----------------------------
  6167. INT 62 u - FGDRIVER v1.10 - "FG_INTKEY" - GET KEYSTROKE, NO WAIT
  6168.     AX = 006Fh
  6169.     ES:BX -> variable pointer record (see below)
  6170. Return: variables updated
  6171. Note:    if the keyboard buffer is empty, both the ASCII and extended keycodes
  6172.       are set to 00h
  6173. SeeAlso: AX=006Dh,AX=006Eh,AX=0070h,AX=0079h
  6174.  
  6175. Format of variable pointer record:
  6176. Offset    Size    Description
  6177.  00h    WORD    segment of BYTE buffer for ASCII keycode
  6178.  02h    WORD    offset of BYTE buffer for ASCII keycode
  6179.  04h    WORD    segment of BYTE buffer for extended keycode
  6180.  06h    WORD    offset of BYTE buffer for extended keycode
  6181. --------V-620070-----------------------------
  6182. INT 62 u - FGDRIVER v1.10 - "FG_CAPSLOCK" - GET STATE OF CAPSLOCK KEY
  6183.     AX = 0070h
  6184. Return: AX = CapsLock state (0000h off, 0001h on)
  6185. SeeAlso: AX=006Eh,AX=006Fh,AX=0071h,AX=0072h,AX=0074h
  6186. --------V-620071-----------------------------
  6187. INT 62 u - FGDRIVER v1.10 - "FG_SETCAPS" - SET STATE OF CAPSLOCK KEY
  6188.     AX = 0071h
  6189.     BX = new state (0000h off, 0001h on)
  6190. SeeAlso: AX=0070h,AX=0073h
  6191. --------V-620072-----------------------------
  6192. INT 62 u - FGDRIVER v1.10 - "FG_NUMLOCK" - GET STATE OF NUMLOCK KEY
  6193.     AX = 0072h
  6194. Return: AX = NumLock state (0000h off, 0001h on)
  6195. SeeAlso: AX=0070h,AX=0074h
  6196. --------V-620073-----------------------------
  6197. INT 62 u - FGDRIVER v1.10 - "FG_SETNUM" - SET STATE OF NUMLOCK KEY
  6198.     AX = 0073h
  6199.     BX = new state (0000h off, 0001h on)
  6200. SeeAlso: AX=0071h,AX=0072h
  6201. --------V-620074-----------------------------
  6202. INT 62 u - FGDRIVER v1.10 - "FG_SCRLOCK" - GET STATE OF SCROLL LOCK KEY
  6203.     AX = 0074h
  6204. Return: AX = ScrollLock state (0000h off, 0001h on)
  6205. SeeAlso: AX=0070h,AX=0072h
  6206. --------V-620075-----------------------------
  6207. INT 62 u - FGDRIVER v1.10 - "FG_INITJOY" - INITIALIZE JOYSTICK USE
  6208.     AX = 0075h
  6209.     BX = joystick number (0001h or 0002h)
  6210. Return: AX = status
  6211.         0000h successful
  6212.         FFFFh joystick not connected or no game port
  6213. Note:    Fastgraph assumes that the requested joystick is centered at the time
  6214.       this function is called
  6215. SeeAlso: AX=0076h,AX=0077h,AX=0078h,AX=0079h
  6216. --------V-620076-----------------------------
  6217. INT 62 u - FGDRIVER v1.10 - "FG_GETXJOY" - GET HORIZONTAL POSITION OF JOYSTICK
  6218.     AX = 0076h
  6219.     BX = joystick number (0001h or 0002h)
  6220. Return: AX = horizontal position of joystick
  6221.         FFFFh if joystick uninitialized or not present
  6222. Notes:    the actual coordinates are processor- and joystick-dependent
  6223.     you must call AX=0075h before this function
  6224. SeeAlso: AX=0075h,AX=0077h,AX=0078h
  6225. --------V-620077-----------------------------
  6226. INT 62 u - FGDRIVER v1.10 - "FG_GETYJOY" - GET VERTICAL POSITION OF JOYSTICK
  6227.     AX = 0077h
  6228.     BX = joystick number (0001h or 0002h)
  6229. Return: AX = vertical position of joystick
  6230.         FFFFh if joystick uninitialized or not present
  6231. Notes:    the actual coordinates are processor- and joystick-dependent
  6232.     you must call AX=0075h before this function
  6233. SeeAlso: AX=0075h,AX=0076h,AX=0078h
  6234. --------V-620078-----------------------------
  6235. INT 62 u - FGDRIVER v1.10 - "FG_BUTTON" - GET JOYSTICK BUTTON STATE
  6236.     AX = 0078h
  6237.     BX = joystick number (0001h or 0002h)
  6238. Return: AX = button states
  6239.         bit 0: top button pressed
  6240.         bit 1: bottom button pressed
  6241. SeeAlso: AX=0075h,AX=0076h,AX=0077h,AX=0079h
  6242. --------V-620079-----------------------------
  6243. INT 62 u - FGDRIVER v1.10 - "FG_INTJOY" - GET KEYCODES CORRESP TO JOYSTICK POS
  6244.     AX = 0079h
  6245.     CX = joystick number (0001h or 0002h)
  6246.     ES:BX -> variable pointer record (see below)
  6247. Notes:    if the indicated joystick has not been initialized with AX=0075h, both
  6248.       the button code and joystick position will be set to 00h
  6249.     if either button is pressed, a button code of 0Dh is returned;
  6250.       otherwise, a button code of 00h is returned
  6251. SeeAlso: AX=006Fh,AX=0075h,AX=0078h
  6252.  
  6253. Format of variable pointer record:
  6254. Offset    Size    Description
  6255.  00h    WORD    segment of BYTE buffer for button code
  6256.  02h    WORD    offset of BYTE buffer for button code
  6257.  04h    WORD    segment of BYTE buffer for joystick position
  6258.  06h    WORD    offset of BYTE buffer for joystick position
  6259. --------V-62007A-----------------------------
  6260. INT 62 u - FGDRIVER v1.10 - "FG_MOUSEINI" - INITIALIZE MOUSE SUPPORT
  6261.     AX = 007Ah
  6262. Return: AX = status
  6263.         0002h two-button mouse
  6264.         0003h three-button mouse
  6265.         FFFFh initialization failed
  6266. Note:    after this call, the mouse cursor is invisible
  6267. SeeAlso: AX=007Bh,AX=007Ch,AX=007Eh,AX=0080h,INT 33/AX=0000h
  6268. --------V-62007B-----------------------------
  6269. INT 62 u - FGDRIVER v1.10 - "FG_MOUSEVIS" - SET MOUSE CURSOR VISIBILITY
  6270.     AX = 007Bh
  6271.     BX = new state (0000h invisible, 0001h visible)
  6272. SeeAlso: AX=007Ah,AX=007Eh,INT 33/AX=0001h,INT 33/AX=0002h
  6273. --------V-62007C-----------------------------
  6274. INT 62 u - FGDRIVER v1.10 - "FG_MOUSEBUT" - GET MOUSE BUTTON PRESS/RELEASE CNTS
  6275.     AX = 007Ch
  6276.     CX = mouse button (1 = left press, 2 = right press, 3 = middle press,
  6277.               -1=left release, -2=right release, -3=middle release)
  6278.     ES:BX -> variable pointer record (see below)
  6279. Return: variables updated
  6280. Note:    returns the count of presses or releases since the last call to this
  6281.       function; if the count is zero, row and col will also be zero
  6282. SeeAlso: AX=007Ah,INT 33/AX=0005h,INT 33/AX=0006h
  6283.  
  6284. Format of variable pointer record:
  6285. Offset    Size    Description
  6286.  00h    WORD    segment of WORD buffer for press/release count
  6287.  02h    WORD    offset of WORD buffer for press/release count
  6288.  04h    WORD    segment of WORD buffer for screen space col of last press/rls
  6289.  06h    WORD    offset of WORD buffer for screen space col of last press/rels
  6290.  08h    WORD    segment of WORD buffer for screen space row of last press/rls
  6291.  0Ah    WORD    offset of WORD buffer for screen space row of last press/rls
  6292. --------V-62007D-----------------------------
  6293. INT 62 u - FGDRIVER v1.10 - "FG_MOUSEPOS" - GET CURRENT MOUSE POSITION
  6294.     AX = 007Dh
  6295.     ES:BX -> variable pointer record (see below)
  6296. SeeAlso: AX=007Ah,AX=0081h
  6297.  
  6298. Format of variable pointer record:
  6299. Offset    Size    Description
  6300.  00h    WORD    segment of WORD buffer for mouse column
  6301.  02h    WORD    offset of WORD buffer for mouse column
  6302.  04h    WORD    segment of WORD buffer for mouse row
  6303.  06h    WORD    offset of WORD buffer for mouse row
  6304.  08h    WORD    segment of WORD buffer for button status
  6305.  0Ah    WORD    offset of WORD buffer for button status
  6306. Note:    button status: bit 0 = left button, bit 1 = right, bit 2 = middle
  6307. --------V-62007E-----------------------------
  6308. INT 62 u - FGDRIVER v1.10 - "FG_MOUSECUR" - SPECIFY TEXT-MODE MOUSE CURSOR
  6309.     AX = 007Eh
  6310.     BX = screen mask
  6311.     CX = cursor mask
  6312. Note:    this call is ignored in graphics modes
  6313. SeeAlso: AX=007Ah,AX=007Fh,INT 33/AX=000Ah
  6314. --------V-62007F-----------------------------
  6315. INT 62 u - FGDRIVER v1.10 - "FG_MOUSEPTR" - SPECIFY GRAPH-MODE MOUSE CURSOR
  6316.     AX = 007Fh
  6317.     ES:BX -> masks (16-byte screen mask followed by 16-byte cursor mask)
  6318.     CX = X offset of hot spot from upper left corner
  6319.     DX = Y offset of hot spot from upper left corner
  6320. Note:    this call is ignored in text modes
  6321. SeeAlso: AX=007Ah,AX=007Eh,INT 33/AX=0009h
  6322. --------V-620080-----------------------------
  6323. INT 62 u - FGDRIVER v1.10 - "FG_MOUSELIM" - SPECIFY MOUSE CURSOR LIMITS
  6324.     AX = 0080h
  6325.     BX = left-most position allowed for mouse cursor
  6326.     CX = right-most position allowed
  6327.     DX = top-most position allowed
  6328.     SI = bottom-most position allowed
  6329. SeeAlso: AX=007Ah,AX=0081h,INT 33/AX=0007h,INT 33/AX=0008h
  6330. --------V-620081-----------------------------
  6331. INT 62 u - FGDRIVER v1.10 - "FG_MOUSEMOV" - SET MOUSE CURSOR POSITION
  6332.     AX = 0081h
  6333.     BX = new column
  6334.     CX = new row
  6335. Note:    will not move the mouse cursor outside the bounding box specified with
  6336.       AX=0080h
  6337. SeeAlso: AX=007Ah,AX=007Dh,AX=0080h,INT 33/AX=0004h
  6338. --------V-620082-----------------------------
  6339. INT 62 u - FGDRIVER v1.10 - "FG_MOUSESPD" - SET MOUSE CURSOR SPEED
  6340.     AX = 0082h
  6341.     BX = horizontal mickeys per eight pixels of movement (default 16)
  6342.     CX = vertical mickeys per eight pixels of movement (default 16)
  6343. SeeAlso: INT 33/AX=000Fh,INT 33/AX=001Ah
  6344. --------V-620083-----------------------------
  6345. INT 62 - FGDRIVER v1.10 - UNUSED
  6346.     AX = 0083h to 0087h
  6347. Return: AX = 0000h
  6348. --------V-620088-----------------------------
  6349. INT 62 u - FGDRIVER v1.10 - "FG_SOUND" - MAKE SOUND FOR SPECIFIED DURATION
  6350.     AX = 0088h
  6351.     BX = frequency in Hertz (18-32767)
  6352.     CX = duration in clock ticks (0000h or negative for continuous sound)
  6353. Note:    ignored if asynchronous sound (AX=0089h,AX=008Bh,AX=008Dh) is in
  6354.       progress
  6355. SeeAlso: AX=0089h,AX=008Ah,AX=008Eh,AX=0090h
  6356. --------V-620089-----------------------------
  6357. INT 62 u - FGDRIVER v1.10 - "FG_SOUNDS" - PLAY SOUNDS IN BACKGROUND
  6358.     AX = 0089h
  6359.     CX = number of times to cycle through sound list
  6360.     ES:BX -> sounds array (see below)
  6361. Note:    ignored if asynchronous sound (AX=0089h,AX=008Bh,AX=008Dh) is in
  6362.       progress
  6363. SeeAlso: AX=0088h,AX=008Eh,AX=008Fh
  6364.  
  6365. Format of sounds array element:
  6366. Offset    Size    Description
  6367.  00h    WORD    frequency of sound in Hertz (0000h ends array)
  6368.  02h    WORD    duration of sound in clock ticks
  6369. --------V-62008A-----------------------------
  6370. INT 62 u - FGDRIVER v1.10 - "FG_VOICE" - START SOUND
  6371.     AX = 008Ah
  6372.     BX = channel on TI sound chip
  6373.         1-3 = channels 1-3, 4 = channel 4 with periodic noise,
  6374.         5 = channel 4 with white noise
  6375.     CX = frequency in Hz (18-32767 for channels 1-3; 0=512 Hz, 1=1024 Hz,
  6376.         2=2048 Hz for channels 4 and 5)
  6377.     DX = volume
  6378.     SI = duration in clock ticks (continuous if <= 0)
  6379. Notes:    FGDRIVER is the external video driver for the shareware
  6380.       Fastgraph/Light by Ted Gruber Software
  6381.     only available on PCjr and Tandy 1000
  6382. SeeAlso: AX=0088h,AX=008Bh,AX=008Ch
  6383. --------V-62008B-----------------------------
  6384. INT 62 u - FGDRIVER v1.10 - "FG_VOICES" - PLAY SOUNDS IN BACKGROUND
  6385.     AX = 008Bh
  6386.     ES:BX -> tone array (see below)
  6387.     CX = number of times to repeat tone array
  6388. Notes:    FGDRIVER is the external video driver for the shareware
  6389.       Fastgraph/Light by Ted Gruber Software
  6390.     only available on PCjr and Tandy 1000
  6391. SeeAlso: AX=008Ah,AX=008Dh,AX=008Eh,AX=008Fh,AX=0091h
  6392.  
  6393. Format of tone array element:
  6394. Offset    Size    Description
  6395.  00h    WORD    channel number (0000h terminates array)
  6396.  02h    WORD    frequency
  6397.  04h    WORD    volume
  6398.  06h    WORD    duration in 1/72.8 seconds
  6399. --------V-62008C-----------------------------
  6400. INT 62 u - FGDRIVER v1.10 - "FG_MUSIC" - PLAY SERIES OF NOTES
  6401.     AX = 008Ch
  6402.     ES:BX -> '$'-terminated music string in BASIC PLAY format
  6403. Return: after music completed
  6404. Note:    ignored if asynchronous sound (AX=0089h,AX=008Bh,AX=008Dh) is in
  6405.       progress
  6406. SeeAlso: AX=008Ah,AX=008Dh
  6407. --------V-62008D-----------------------------
  6408. INT 62 u - FGDRIVER v1.10 - "FG_MUSICB" - PLAY SERIES OF NOTES IN BACKGROUND
  6409.     AX = 008Dh
  6410.     CX = number of repetitions (negative = continuous play)
  6411.     ES:BX -> '$'-terminated music string in BASIC PLAY format
  6412. Note:    ignored if asynchronous sound (AX=0089h,AX=008Bh,AX=008Dh) is in
  6413.       progress
  6414. SeeAlso: AX=008Bh,AX=008Ch,AX=008Eh,AX=008Fh,AX=0091h
  6415. --------V-62008E-----------------------------
  6416. INT 62 u - FGDRIVER v1.10 - "FG_HUSH" - STOP ASYNCHRONOUS SOUND IMMEDIATELY
  6417.     AX = 008Eh
  6418. Note:    immediately stops any sounds started with "FG_MUSICB", "FG_SOUNDS",
  6419.       or AX=008Bh; ignored if no asynchronous sound is playing
  6420. SeeAlso: AX=0088h,AX=008Bh,AX=008Fh,AX=0090h,AX=0091h
  6421. --------V-62008F-----------------------------
  6422. INT 62 u - FGDRIVER v1.10 - "FG_HUSHNEXT" - STOP ASYNCHRONOUS SOUND
  6423.     AX = 008Fh
  6424. Note:    stops any sounds started with "FG_MUSICB", "FG_SOUNDS", or AX=008Bh
  6425.       after the current repetition completes; ignored unless asynchronous
  6426.       sound is continuous
  6427. SeeAlso: AX=008Bh,AX=008Eh,AX=0090h
  6428. --------V-620090-----------------------------
  6429. INT 62 u - FGDRIVER v1.10 - "FG_QUIET" - STOP CONTINUOUS SYNCHRONOUS SOUND
  6430.     AX = 0090h
  6431. Note:    this call has no effect if there is no continuous sound playing
  6432. SeeAlso: AX=008Eh,AX=008Fh,AX=0091h
  6433. --------V-620091-----------------------------
  6434. INT 62 u - FGDRIVER v1.10 - "FG_PLAYING" - DETERMINE WHETHER ASYNC SOUND ACTIVE
  6435.     AX = 0091h
  6436. Return: AX = sound state (0 = no asynchronous sound, 1 = async sound playing)
  6437. SeeAlso: AX=008Bh,AX=008Dh,AX=0090h
  6438. --------V-620092-----------------------------
  6439. INT 62 u - FGDRIVER v1.10 - "FG_RESUME" - RESTART ASYNCHRONOUS SOUND
  6440.     AX = 0092h
  6441. SeeAlso: AX=008Eh,AX=008Fh,AX=0090h
  6442. --------V-620093-----------------------------
  6443. INT 62 u - FGDRIVER v1.10 - "FG_SUSPEND" - TEMPORARILY STOP ASYNCHRONOUS SOUND
  6444.     AX = 0093h
  6445. Notes:    this call has no effect if there is no asynchronous sound in progress
  6446.     the program must not exit while sound is suspended
  6447. SeeAlso: AX=0092h
  6448. --------V-620094-----------------------------
  6449. INT 62 - FGDRIVER v1.10 - UNUSED
  6450.     AX = 0094h to 0095h
  6451. Return: AX = 0000h
  6452. --------V-620096-----------------------------
  6453. INT 62 u - FGDRIVER v1.10 - "FG_WAITFOR" - DELAY FOR SPECIFIED DURATION
  6454.     AX = 0096h
  6455.     BX = duration in clock ticks
  6456. Return: after delay elapses
  6457. SeeAlso: AX=006Dh,AX=0097h,INT 1A/AX=FF01h
  6458. --------V-620097-----------------------------
  6459. INT 62 u - FGDRIVER v1.10 - "FG_STALL" - PAUSE FOR SPECIFIED DURATION
  6460.     AX = 0097h
  6461.     BX = duration in processor-dependent delay units (see AX=0098h)
  6462. Return: after delay elapses
  6463. SeeAlso: AX=0096h,AX=0098h,INT 2F/AX=1224h
  6464. --------V-620098-----------------------------
  6465. INT 62 u - FGDRIVER v1.10 - "FG_MEASURE" - GET DELAY UNITS PER CLOCK TICK
  6466.     AX = 0098h
  6467. Return: AX = delay units per clock tick (processor-dependent)
  6468. Note:    delay units are used by "FG_STALL" (AX=0097h)
  6469. SeeAlso: AX=0097h
  6470. --------V-620099-----------------------------
  6471. INT 62 u - FGDRIVER v1.10 - "FG_GETCLOCK" - GET CLOCK TICKS SINCE MIDNIGHT
  6472.     AX = 0099h
  6473. Return: DX:AX = number of clock ticks since midnight
  6474. Note:    FGDRIVER is the external video driver for the shareware
  6475.       Fastgraph/Light by Ted Gruber Software
  6476. SeeAlso: INT 1A/AH=00h
  6477. --------V-62009A-----------------------------
  6478. INT 62 - FGDRIVER v1.10 - UNUSED
  6479.     AX = 009Ah
  6480. Return: AX = 0000h
  6481. --------V-62009B-----------------------------
  6482. INT 62 u - FGDRIVER v1.10 - "FG_MEMAVAIL" - QUERY AMOUNT OF FREE MEMORY
  6483.     AX = 009Bh
  6484. Return: DX:AX = number of bytes of conventional memory available
  6485. SeeAlso: AX=009Dh
  6486. --------V-62009C-----------------------------
  6487. INT 62 u - FGDRIVER v1.10 - "FG_SETFUNC" - SET LOGICAL OPERATION FOR VIDEO OPS
  6488.     AX = 009Ch
  6489.     BX = operation
  6490.         0000h replacement
  6491.         0001h AND
  6492.         0002h OR
  6493.         0003h XOR
  6494. Note:    only available in native EGA/VGA graphics mode (0Dh to 12h)
  6495. --------V-62009D-----------------------------
  6496. INT 62 u - FGDRIVER v1.10 - "FG_ALLOCCMS" - CREATE LOGICAL VIDEO PAGE (CONVMEM)
  6497.     AX = 009Dh
  6498.     BX = page number (0001h-003Fh)
  6499. Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see below)
  6500. Note:    the only operation which is allowed on logical pages is AX=005Fh
  6501. SeeAlso: AX=0043h,AX=005Fh,AX=009Bh,AX=009Eh,AX=009Fh
  6502.  
  6503. Values for status:
  6504.  0000h    successful
  6505.  FFFCh    insufficient memory
  6506.  FFFDh    page already created, or exists as physical or virtual page
  6507.  FFFEh    invalid page number
  6508.  FFFFh    memory manager not initialized
  6509. --------V-62009E-----------------------------
  6510. INT 62 u - FGDRIVER v1.10 - "FG_ALLOCEMS" - CREATE LOGICAL VIDEO PAGE (EMS)
  6511.     AX = 009Eh
  6512.     BX = page number (0001h-003Fh)
  6513. Return: AX = status (see AX=009Dh)
  6514. Notes:    must first call AX=00A0h
  6515.     the only operation which is allowed on logical pages is AX=005Fh
  6516. SeeAlso: AX=0043h,AX=005Fh,AX=009Dh,AX=009Fh,AX=00A0h
  6517. --------V-62009F-----------------------------
  6518. INT 62 u - FGDRIVER v1.10 - "FG_ALLOCXMS" - CREATE LOGICAL VIDEO PAGE (XMS)
  6519.     AX = 009Fh
  6520.     BX = page number (0001h-003Fh)
  6521. Return: AX = status (see AX=009Dh)
  6522. Notes:    must first call AX=00A1h
  6523.     the only operation which is allowed on logical pages is AX=005Fh
  6524. SeeAlso: AX=0043h,AX=005Fh,AX=009Dh,AX=009Eh,AX=00A1h
  6525. --------V-6200A0-----------------------------
  6526. INT 62 u - FGDRIVER v1.10 - "FG_INITEMS" - INITIALIZE EXPANDED MEMORY USE
  6527.     AX = 00A0h
  6528. Return: AX = status
  6529.         0000h successful
  6530.         FFFFh expanded memory manager inaccessible or not installed
  6531. SeeAlso: AX=009Eh,AX=00A1h
  6532. --------V-6200A1-----------------------------
  6533. INT 62 u - FGDRIVER v1.10 - "FG_INITXMS" - INITIALIZE EXTENDED MEMORY USE
  6534.     AX = 00A1h
  6535. Return: AX = status
  6536.         0000h successful
  6537.         FFFFh extended memory manager inaccessible or not installed
  6538. SeeAlso: AX=009Fh,AX=00A0h
  6539. --------V-6200A2-----------------------------
  6540. INT 62 u - FGDRIVER v1.10 - "FG_BOX" - DRAW UNFILLED RECTANGLE
  6541.     AX = 00A2h
  6542.     BX = left column
  6543.     CX = right column
  6544.     DX = top row
  6545.     SI = bottom row
  6546. Notes:    FGDRIVER is the external video driver for the shareware
  6547.       Fastgraph/Light by Ted Gruber Software
  6548.     the rectangle is drawn in screen space, respecting the clipping region,
  6549.       with edges of the width specified with AX=00A3h (default = 1 is set
  6550.       by "FG_SETMODE")
  6551.     this function has no effect in text modes
  6552. SeeAlso: AX=002Bh,AX=002Ch,AX=002Eh,AX=0030h,AX=00A3h
  6553. --------V-6200A3-----------------------------
  6554. INT 62 u - FGDRIVER v1.10 - "FG_BOXDEPTH" - SET RECTANGLE BORDER WIDTH
  6555.     AX = 00A3h
  6556.     BX = width of left and right edges in pixels (> 0)
  6557.     CX = width of top and bottom edges in pixels (> 0)
  6558. SeeAlso: AX=00A2h
  6559. --------V-6200A4-----------------------------
  6560. INT 62 u - FGDRIVER v1.10 - "FG_GETDACS" - GET VIDEO DAC CONTENTS
  6561.     AX = 00A4h
  6562.     CX = number of DAC registers to return (0001h to 0100h)
  6563.     DX = starting DAC register number (0000h to 00FFh)
  6564.     ES:BX -> buffer for DAC red/green/blue triples
  6565. Note:    the register number wraps back to zero after FFh
  6566. SeeAlso: AX=001Ch,AX=00A5h,INT 10/AX=1017h
  6567. --------V-6200A5-----------------------------
  6568. INT 62 u - FGDRIVER v1.10 - "FG_SETDACS" - SET VIDEO DAC CONTENTS
  6569.     AX = 00A5h
  6570.     CX = number of DAC registers to set (0001h to 0100h)
  6571.     DX = starting DAC register number (0000h to 00FFh)
  6572.     ES:BX -> buffer containing DAC red/green/blue triples
  6573. Notes:    the register number wraps back to zero after FFh
  6574.     this call has no effect in text modes or graphics modes below 11h
  6575. SeeAlso: AX=001Bh,AX=00A4h,INT 10/AX=1012h
  6576. --------T-6201-------------------------------
  6577. INT 62 - Cswitch - GIVE UP REST OF TIME-SLICE
  6578.     AH = 01h
  6579. Program: Cswitch is a set of multitasking functions by Herb Rose
  6580. SeeAlso: AH=05h,AH=06h,INT 15/AX=1000h,INT 2F/AX=1680h
  6581. --------T-6202-------------------------------
  6582. INT 62 - Cswitch - WAIT FOR SEMAPHORE
  6583.     AH = 02h
  6584.     DX = semaphore number (0-63)
  6585. Return: AX = FFFFh bad semaphore number
  6586.          else  success
  6587. SeeAlso: AH=03h,AH=04h
  6588. --------T-6203-------------------------------
  6589. INT 62 - Cswitch - CHECK SEMAPHORE
  6590.     AH = 03h
  6591.     DX = semaphore number (0-63)
  6592. Return: AX = FFFFh not owned
  6593.          else  owned
  6594. SeeAlso: AH=02h,AH=04h
  6595. --------T-6204-------------------------------
  6596. INT 62 - Cswitch - TRIGGER SEMAPHORE
  6597.     AH = 04h
  6598.     DX = semaphore number (0-63)
  6599. Return: AX = FFFFh bad semaphore number
  6600.          else  success
  6601. SeeAlso: AH=02h,AH=03h
  6602. --------T-6205-------------------------------
  6603. INT 62 - Cswitch - SLEEP
  6604.     AH = 05h
  6605.     BX = seconds to sleep
  6606. SeeAlso: AH=01h,AH=06h,AH=08h"Cswitch"
  6607. --------T-6206-------------------------------
  6608. INT 62 - Cswitch - SUSPEND
  6609.     AH = 06h
  6610. SeeAlso: AH=05h,AH=08h"Cswitch"
  6611. --------T-6207-------------------------------
  6612. INT 62 - Cswitch - SPAWN
  6613.     AH = 07h
  6614.     ES:BX -> function address to start executing at
  6615.     CX = priority (1-10)
  6616. Return: AX = FFFDh  no free memory control blocks
  6617.        = FFFEh  no free task control blocks
  6618.        = FFFFh  not enough memory to create new task stack
  6619.        = >0        the tcb number of the new task, indicating no error
  6620. SeeAlso: AH=0Fh,AH=10h
  6621. --------T-6208-------------------------------
  6622. INT 62 - Cswitch - WAKE UP TASK
  6623.     AH = 08h
  6624.     BX = tcb identifier
  6625. SeeAlso: AH=05h,AH=06h
  6626. ----------6208--CXFFFE-----------------------
  6627. INT 62 - MS SQL Server/Sybase DBLIBRARY interface - UNINSTALL/GET PSP ADDR
  6628.     AH = 08h
  6629.     CX = FFFEh
  6630.     DX = FFFFh
  6631. Return: AX = PSP address of resident DBLIBRARY
  6632. Note:    this call does not free the memory allocated to the TSR; the calling
  6633.       code must do the deallocation.
  6634. SeeAlso: INT 62"DBLIBRARY"
  6635. --------T-6209-------------------------------
  6636. INT 62 - Cswitch - SET PRIORITY
  6637.     AH = 09h
  6638.     BX = new base priority (1-10)
  6639. Note:    the lower the priority is numerically, the more often the task will run
  6640. --------T-620A-------------------------------
  6641. INT 62 - Cswitch - TEST MESSAGE QUEUE
  6642.     AH = 0Ah
  6643.     DX = queue number (0-63)
  6644. Return: AX = FFFFh bad queue number
  6645.        = 0000h nothing on queue
  6646.          else  number of bytes in first message in queue
  6647. SeeAlso: AH=0Bh,AH=0Ch
  6648. --------T-620B-------------------------------
  6649. INT 62 - Cswitch - SEND MESSAGE
  6650.     AH = 0Bh
  6651.     CX = number of bytes to write
  6652.     DS:SI -> buffer
  6653.     DX = queue number (0-63)
  6654. Return: AX = FFFEh triggered by something arriving, redo the call
  6655.        = FFFFh bad queue number
  6656.        = 0000h no message was on queue
  6657.          else  number of bytes in message
  6658. SeeAlso: AH=0Ah,AH=0Ch
  6659. --------T-620C-------------------------------
  6660. INT 62 - Cswitch - READ MESSAGE
  6661.     AH = 0Ch
  6662.     CX = number of bytes to read
  6663.     DS:SI -> buffer
  6664.     DX = queue number (0-63)
  6665. Return: AX = FFFFh bad queue number
  6666.          else  number of bytes transferred
  6667. SeeAlso: AH=0Ah,AH=0Bh
  6668. --------T-620D-------------------------------
  6669. INT 62 - Cswitch - DON'T ALLOW TASK TO BE SWAPPED OUT
  6670.     AH = 0Dh
  6671. SeeAlso: AH=0Eh
  6672. --------T-620E-------------------------------
  6673. INT 62 - Cswitch - ALLOW TASK TO BE SWAPPED OUT
  6674.     AH = 0Eh
  6675. SeeAlso: AH=0Dh
  6676. --------T-620F-------------------------------
  6677. INT 62 - Cswitch - LOAD AND RUN PROGRAM FROM DISK
  6678.     AH = 0Fh
  6679.     ES:BX -> command line
  6680.     CX = priority (1-10)
  6681.     DX = background flag (nonzero allows loading to EMS)
  6682. Return: AX = 0000h task loader queue is full
  6683.        = 0001h  no error
  6684. SeeAlso: AH=07h,AH=10h,AH=13h
  6685. --------T-6210-------------------------------
  6686. INT 62 - Cswitch - TERMINATE SPAWNED PROGRAM
  6687.     AH = 10h
  6688. SeeAlso: AH=07h,AH=0Fh
  6689. --------T-6211-------------------------------
  6690. INT 62 - Cswitch - GET TCB INFORMATION
  6691.     AH = 11h
  6692.     ES:BX -> a pointer which will be set to the tcb address
  6693. Return: AX = tcb indentifier
  6694. SeeAlso: AH=12h
  6695. --------T-6212-------------------------------
  6696. INT 62 - Cswitch - GET TCB ADDRESS
  6697.     AH = 12h
  6698.     ES:BX -> a pointer which will be set to the tcb table address
  6699. Return: AX = tcb indentifier
  6700. SeeAlso: AH=11h
  6701. --------T-6213-------------------------------
  6702. INT 62 - Cswitch - CHECK STATUS OF PREVIOUS LOAD_TASK
  6703.     AH = 13h
  6704. Return: AX = FFFCh no Memory Control Blocks available
  6705.        = FFFDh no TCBs available
  6706.        = FFFEh insufficient memory
  6707.        = FFFFh cannot open file
  6708.        = 0000h load in progress (not done yet)
  6709.          else  tcb indentifier
  6710. SeeAlso: AH=0Fh
  6711. --------R-6247-------------------------------
  6712. INT 62 - PC Tools v7 COMMUTE - ???
  6713.     AH = 47h
  6714.     AL = subfunction (00h-31h)
  6715.     ???
  6716.     CF set
  6717. Return: ???
  6718. --------R-6248-------------------------------
  6719. INT 62 - PC Tools v7 COMMUTE - ???
  6720.     AH = 48h
  6721.     AL = ???
  6722.     ???
  6723.     CF set
  6724. Return: ???
  6725. --------R-6249-------------------------------
  6726. INT 62 - PC Tools v7 COMMUTE - ???
  6727.     AH = 49h
  6728.     ???
  6729.     CF set
  6730. Return: ???
  6731. Note:    may be the same as AH=4Ch
  6732. --------R-624A-------------------------------
  6733. INT 62 - PC Tools v7 COMMUTE - ???
  6734.     AH = 4Ah
  6735.     AL = subfunction (00h-46h)
  6736.     ???
  6737.     CF set
  6738. Return: ???
  6739. --------R-624B--BX1234-----------------------
  6740. INT 62 - PC Tools v7 COMMUTE - ???
  6741.     AH = 4Bh
  6742.     BX = 1234h
  6743.     CX = 1234h
  6744.     ES = ???
  6745.     CF set
  6746. Return: ???
  6747. --------R-624C-------------------------------
  6748. INT 62 - PC Tools v7 COMMUTE - ???
  6749.     AH = 4Ch
  6750.     BL = subfunction
  6751.         00h ???
  6752.         02h ???
  6753. Return: CF clear if successful
  6754.     CF set on error
  6755. --------R-626262-----------------------------
  6756. INT 62 - PC Tools v7 COMMUTE - INSTALLATION CHECK
  6757.     AX = 6262h
  6758.     CF set
  6759. Return: AX = 0000h
  6760.     BX = segment of resident code's PSP
  6761. --------N-62FE-------------------------------
  6762. INT 62 - BW-TCP - ETHDRV.SYS - MAP EMS PAGE FRAME
  6763.     AH = FEh
  6764.     AL = direction
  6765.         00h map in driver's memory block
  6766.         01h map out driver's memory block
  6767. Return: CF clear if successful
  6768.     CF set on error
  6769.         AL = error code
  6770. Note:    this function is supported by at least the SLIP and ODI versions of
  6771.       ETHDEV.SYS
  6772. SeeAlso: INT 21/AH=3Fh"BW-TCP",INT 62"BW-TCP",INT 63"BW-TCP",INT 64/AH=FEh
  6773. --------*-63---------------------------------
  6774. INT 63 - reserved for user interrupt
  6775. --------d-63---------------------------------
  6776. INT 63 - Adaptec and OMTI controllers - DRIVE 0 DATA
  6777. Notes:    this vector stores the last four bytes of the parameter table for
  6778.       hard disk 0
  6779. SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 62"Adaptec",INT 64"Adaptec"
  6780. ----------63---------------------------------
  6781. INT 63 - Oracle SQL Protected Mode Executive - ???
  6782. --------d-63---------------------------------
  6783. INT 63 - 4+Power FLOPPY CONTROLLER - ORIGINAL INT 13/40
  6784.    the "4+Power" quad floppy controller BIOS hooks INT 13 (or INT 40 if INT 13
  6785.    has been moved there) and places the old value here
  6786. ----------63---------------------------------
  6787. INT 63 - Kofax KF9X00 image manipulation card interface
  6788. --------Q-63---------------------------------
  6789. INT 63 - DESQview/X - SOCKET API
  6790. Notes:    parameters are passed by patching!! data field immediately following
  6791.       the entry point, as detailed below; the preferred method for calling
  6792.       the socket API is via INT 15/AX=DE2Eh
  6793.     the installation check consists of testing for the string "dvxunix"
  6794.       (yes, lowercase) at offset 9 from the interrupt handler start
  6795. SeeAlso: INT 15/AX=DE2Eh,INT BE"DESQview"
  6796. Index:    installation check;DESQview/X socket interface
  6797.  
  6798. Format of interrupt handler entry:
  6799. Offset    Size    Description
  6800.  00h  3 BYTEs    near jump or short jump + NOP to actual interrupt handler
  6801.  03h    WORD    offset from following pointer for initial top of local stack
  6802.  05h    DWORD    pointer to argument/stack block (see INT 15/AX=DE2Eh)
  6803.  09h  7 BYTEs    signature "dvxunix"
  6804. --------b-6300-------------------------------
  6805. INT 63 - HP 100LX - MAP HIGH MEMORY
  6806.     AH = 00h
  6807.     AL = physical page (00h seg C000, 01h seg C400h, ...)
  6808.     BX = zero-based logical page
  6809.     CX = page number
  6810.     DX = device ID (00h system ROM, 05h plugin, etc.)
  6811. Return: ???
  6812. SeeAlso: AH=01h
  6813. --------N-6300-------------------------------
  6814. INT 63 - BW-TCP - TCPIP.SYS - SET IP ADDRESS???
  6815.     AH = 00h
  6816.     DS:BX -> DWORD containing IP address (big-endian)
  6817. Return: CF clear if successful
  6818.     CF set on error
  6819.     AX destroyed
  6820. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  6821.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  6822.       consecutive interrupt (64h by default) if it is loaded
  6823. SeeAlso: AH=01h"BW-TCP",AH=02h"BW-TCP"
  6824. --------b-6301-------------------------------
  6825. INT 63 - HP 100LX - SAVE/RESTORE MEMORY MAP
  6826.     AH = 01h
  6827.     AL = function (00h save, 01h restore)
  6828.     ???
  6829. Return: ???
  6830. --------N-6301-------------------------------
  6831. INT 63 - BW-TCP - TCPIP.SYS - ???
  6832.     AH = 01h
  6833.     ES:BX -> ???
  6834.     ???
  6835. Return: ???
  6836. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  6837.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  6838.       consecutive interrupt (64h by default) if it is loaded
  6839. SeeAlso: AH=00h"BW-TCP",AH=02h"BW-TCP"
  6840. --------N-6302-------------------------------
  6841. INT 63 - BW-TCP - TCPIP.SYS - ???
  6842.     AH = 02h
  6843.     ???
  6844. Return: ???
  6845. SeeAlso: AH=00h"BW-TCP",AH=01h"BW-TCP"
  6846. --------N-6303-------------------------------
  6847. INT 63 - BW-TCP - TCPIP.SYS - GET IP ADDRESS
  6848.     AH = 03h
  6849.     DS:SI -> buffer for DWORD IP address (big-endian)
  6850. Return: AX destroyed
  6851.     CF clear if successful
  6852.     CF set on error
  6853. Note:    this call may use ARP or RARP to determine the address
  6854. --------N-6304-------------------------------
  6855. INT 63 - BW-TCP - TCPIP.SYS - ???
  6856.     AH = 04h
  6857.     ???
  6858. Return: ???
  6859. --------N-6305-------------------------------
  6860. INT 63 - BW-TCP - TCPIP.SYS - ???
  6861.     AH = 05h
  6862.     DS:BX -> ???
  6863.     ES:SI -> ???
  6864. Return: ???
  6865. --------N-6306-------------------------------
  6866. INT 63 - BW-TCP - TCPIP.SYS - ???
  6867.     AH = 06h
  6868.     ???
  6869. Return: ???
  6870. --------N-6307-------------------------------
  6871. INT 63 - BW-TCP - TCPIP.SYS - ???
  6872.     AH = 07h
  6873.     ???
  6874. Return: ???
  6875. --------N-6308-------------------------------
  6876. INT 63 - BW-TCP - TCPIP.SYS - SET DEFAULT ??? HANDLER
  6877.     AH = 08h
  6878.     DS:BX -> DWORD containing IP address
  6879. Return: CF clear if successful
  6880.     CF set on error
  6881.     ???
  6882. --------N-6309-------------------------------
  6883. INT 63 - BW-TCP - TCPIP.SYS - INSTALL ??? HANDLERS
  6884.     AH = 09h
  6885.     BL = handler type
  6886.     ES:SI -> FAR handler of specified type
  6887. Return: ???
  6888. SeeAlso: AH=0Ah,AH=0Dh
  6889. --------N-630A-------------------------------
  6890. INT 63 - BW-TCP - TCPIP.SYS - DELETE ??? HANDLERS
  6891.     AH = 0Ah
  6892.     BL = handler type
  6893. Return: CF clear if successful
  6894.     CF set on error (no handler of specified type installed)
  6895. SeeAlso: AH=09h
  6896. --------N-630B-------------------------------
  6897. INT 63 - BW-TCP - TCPIP.SYS - ???
  6898.     AH = 0Bh
  6899.     AL = ???
  6900.     DL = ???
  6901.     DS:BX -> ???
  6902.     ES:SI -> ???
  6903. Return: ???
  6904. --------N-630C-------------------------------
  6905. INT 63 - BW-TCP - TCPIP.SYS - ???
  6906.     AH = 0Ch
  6907.     ???
  6908. Return: ???
  6909. --------N-630D-------------------------------
  6910. INT 63 - BW-TCP - TCPIP.SYS - INSTALL DEFAULT ??? HANDLER
  6911.     AH = 0Dh
  6912.     ???
  6913. Return: ???
  6914. Note:    if not already installed, installs a type 06h handler with AH=09h
  6915. SeeAlso: AH=09h
  6916. --------N-630E-------------------------------
  6917. INT 63 - BW-TCP - TCPIP.SYS - CLOSE NETWORK DESCRIPTOR
  6918.     AH = 0Eh
  6919.     ???
  6920. Return: ???
  6921. SeeAlso: INT 61/AH=08h"PC/TCP",INT 61/AH=09h"PC/TCP",INT 61/AH=18h
  6922. --------N-630F-------------------------------
  6923. INT 63 - BW-TCP - TCPIP.SYS - ???
  6924.     AH = 0Fh
  6925.     AL = ???
  6926.     SI = ???
  6927.     DS:DI -> ???
  6928.     ???
  6929. Return: ???
  6930. --------N-6310-------------------------------
  6931. INT 63 - BW-TCP - TCPIP.SYS - ???
  6932.     AH = 10h
  6933.     DS:DI -> ???
  6934.     ???
  6935. Return: ???
  6936. --------N-6311-------------------------------
  6937. INT 63 - BW-TCP - TCPIP.SYS - ???
  6938.     AH = 11h
  6939.     ???
  6940. Return: ???
  6941. --------N-6312-------------------------------
  6942. INT 63 - BW-TCP - TCPIP.SYS - LISTEN FOR INCOMING CONNECTIONS
  6943.     AH = 12h
  6944.     DS:SI -> ???
  6945.     ES:BP -> ???
  6946. Return: ???
  6947. SeeAlso: INT 61/AH=23h
  6948. --------N-6313-------------------------------
  6949. INT 63 - BW-TCP - TCPIP.SYS - NOP
  6950.     AH = 13h
  6951. Return: nothing
  6952. --------N-6314-------------------------------
  6953. INT 63 - BW-TCP - TCPIP.SYS - OPEN NETWORK CONNECTION
  6954.     AH = 14h
  6955.     BX = network descriptor???
  6956.     DS:SI -> ???
  6957.     ES:BP -> ???
  6958. Return: ???
  6959. SeeAlso: INT 61/AH=13h"PC/TCP",INT 62/AH=13h"ETHDEV"
  6960. --------N-6315-------------------------------
  6961. INT 63 - BW-TCP - TCPIP.SYS - ???
  6962.     AH = 15h
  6963.     DS:DI -> ???
  6964.     ???
  6965. Return: ???
  6966. --------N-6316-------------------------------
  6967. INT 63 - BW-TCP - TCPIP.SYS - RESET NETWORK CONNECTION
  6968.     AH = 16h
  6969.     DS:DI -> ???
  6970. Return: ???
  6971. Note:    calls AH=17h after preprocessing
  6972. SeeAlso: AH=17h,INT 61/AH=19h"PC/TCP"
  6973. --------N-6317-------------------------------
  6974. INT 63 - BW-TCP - TCPIP.SYS - ???
  6975.     AH = 17h
  6976.     DS:DI -> ???
  6977.     ???
  6978. Return: ???
  6979. SeeAlso: AH=18h
  6980. --------N-6318-------------------------------
  6981. INT 63 - BW-TCP - TCPIP.SYS - ???
  6982.     AH = 18h
  6983.     DS:DI -> ???
  6984.     ???
  6985. Return: ???
  6986. Note:    same as AH=17h, except performed with interrupts disabled
  6987. SeeAlso: AH=17h
  6988. --------N-6319-------------------------------
  6989. INT 63 - BW-TCP - TCPIP.SYS - WRITE TO THE NETWORK
  6990.     AH = 19h
  6991.     DS:DI -> ???
  6992.     ???
  6993. Return: BX = number of bytes NOT written
  6994.     ???
  6995. Note:    calls AH=17h with interrupts disabled and ??? set to 01h
  6996. SeeAlso: AH=1Ah,AH=1Bh,INT 61/AH=1Ah"PC/TCP"
  6997. --------N-631A-------------------------------
  6998. INT 63 - BW-TCP - TCPIP.SYS - READ FROM THE NETWORK
  6999.     AH = 1Ah
  7000.     CX = maximum number of bytes to read
  7001.     ES:BP -> ???
  7002.     ???
  7003. Return: CX = number of bytes actually read
  7004.     ???
  7005. SeeAlso: AH=19h,INT 61/AH=1Bh"PC/TCP"
  7006. --------N-631B-------------------------------
  7007. INT 63 - BW-TCP - TCPIP.SYS - ???
  7008.     AH = 1Bh
  7009.     CX = ???
  7010.     ES:BP -> ???
  7011. Return: DX = ???
  7012.     ???
  7013. --------N-631C-------------------------------
  7014. INT 63 - BW-TCP - TCPIP.SYS - ???
  7015.     AH = 1Ch
  7016.     DS:DI -> ???
  7017.     ???
  7018. Return: ???
  7019. Note:    calls AH=17h with ???
  7020. SeeAlso: AH=17h
  7021. --------N-631D-------------------------------
  7022. INT 63 - BW-TCP - TCPIP.SYS - ???
  7023.     AH = 1Dh
  7024.     ???
  7025. Return: ???
  7026. --------N-631E-------------------------------
  7027. INT 63 - BW-TCP - TCPIP.SYS - ???
  7028.     AH = 1Eh
  7029.     DS:BX -> DWORD containing IP address (big-endian)
  7030.     ???
  7031. Return: CF clear if successful
  7032.     CF set on error
  7033.     ???
  7034. --------N-631F-------------------------------
  7035. INT 63 - BW-TCP - TCPIP.SYS - SET SOCKET ??? HANDLER
  7036.     AH = 1Fh
  7037.     BX = socket number
  7038.     ES:SI -> FAR function for ???
  7039. Return: CF clear if successful
  7040.     CF set on error (out of slots)
  7041. SeeAlso: AH=20h
  7042. --------N-6320-------------------------------
  7043. INT 63 - BW-TCP - TCPIP.SYS - REMOVE SOCKET ??? HANDLER
  7044.     AH = 20h
  7045.     BX = socket number
  7046. Return: CF clear if successful
  7047.     CF set on error (not set)
  7048. SeeAlso: AH=1Fh
  7049. --------N-6321-------------------------------
  7050. INT 63 - BW-TCP - TCPIP.SYS - ???
  7051.     AH = 21h
  7052.     ES:SI -> ???
  7053. Return: ???
  7054. SeeAlso: INT 61/AH=1Ch"PC/TCP"
  7055. --------N-6322-------------------------------
  7056. INT 63 - BW-TCP - TCPIP.SYS - REMOVE ??? HANDLER
  7057.     AH = 22h
  7058. Return: CF clear
  7059. Note:    decrements a counter if not already zero, and calls AH=0Ah with BL=11h
  7060.       if the counter reaches zero
  7061. --------N-6323-------------------------------
  7062. INT 63 - BW-TCP - TCPIP.SYS - ???
  7063.     AH = 23h
  7064.     DS:BX -> ???
  7065.     ES:SI -> 6-byte buffer for ???
  7066. Return: CF clear if successful
  7067.     CF set on error
  7068. --------N-6324-------------------------------
  7069. INT 63 - BW-TCP - TCPIP.SYS - GET SOCKET
  7070.     AH = 24h
  7071. Return: AX = socket number (0400h-FFFFh)
  7072. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  7073.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  7074.       consecutive interrupt (64h by default) if it is loaded
  7075. SeeAlso: INT 62"BW-TCP",INT 64"BW-NFS"
  7076. --------N-6325-------------------------------
  7077. INT 63 - BW-TCP - TCPIP.SYS - GET INTERNET ADDRESS
  7078.     AH = 25h
  7079. Return: CL:CH:DL:DH = caller's Internet address
  7080. SeeAlso: AH=26h,INT 61/AH=05h"PC/TCP"
  7081. --------N-6326-------------------------------
  7082. INT 63 - BW-TCP - TCPIP.SYS - SET INTERNET ADDRESS???
  7083.     AH = 26h
  7084.     CL:CH:DL:DH = Internet address
  7085. Return: nothing
  7086. Note:    this function sets a different variable than AH=25h returns
  7087. SeeAlso: AH=25h
  7088. --------N-6327-------------------------------
  7089. INT 63 - BW-TCP - TCPIP.SYS - SET ???
  7090.     AH = 27h
  7091.     BX = ???
  7092.     ES:SI -> ???
  7093. Return: ???
  7094. --------N-6328-------------------------------
  7095. INT 63 - BW-TCP - TCPIP.SYS - ???
  7096.     AH = 28h
  7097.     ???
  7098. Return: ???
  7099. --------N-6329-------------------------------
  7100. INT 63 - BW-TCP - TCPIP.SYS - ???
  7101.     AH = 29h
  7102.     ???
  7103. Return: ???
  7104. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  7105.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  7106.       consecutive interrupt (64h by default) if it is loaded
  7107. --------*-64---------------------------------
  7108. INT 64 - reserved for user interrupt
  7109. --------d-64---------------------------------
  7110. INT 64 - Adaptec controllers - DRIVE 1 DATA
  7111. Notes:    this vector stores the first four bytes of the parameter table for
  7112.       hard disk 1
  7113.     these vectors are used by the following Adaptec controllers:
  7114.         ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
  7115.     these vectors are NOT used by the following Adaptec controllers:
  7116.         ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
  7117. SeeAlso: INT 60"Adaptec",INT 65"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
  7118. ----------64---------------------------------
  7119. INT 64 - Oracle SQL Protected Mode Executive - ???
  7120. --------N-64---------------------------------
  7121. INT 64 - Novell NetWare to v2.0a - LOW-LEVEL API
  7122. Note:    equivalent to INT 7A for NetWare versions through 2.0a only; later
  7123.       versions do not use this interrupt for IPX/SPX access, instead
  7124.       getting an entry point from INT 2F/AX=7A00h
  7125. SeeAlso: INT 2F/AX=7A00h,INT 7A"Novell"
  7126. --------h-64---------------------------------
  7127. INT 64 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  7128. SeeAlso: INT 65"DG10",INT 66"DG10"
  7129. --------r-64---------------------------------
  7130. INT 64 - Extended Batch Language v3.14+
  7131.     AH = function
  7132.         00h to 5Fh chained to previous handler
  7133.         60h to 6Ch reserved, return immediately
  7134.         80h to FFh chained to previous handler
  7135.         6Dh (v4.01+) insert tone in queue
  7136.         AL = ???
  7137.         CX = frequency in Hertz
  7138.         DL = duration in clock ticks
  7139.         Return: AL = 00h if note stored
  7140.                = 01h if no room to store
  7141.         6Eh clear ??? counter/flag
  7142.         6Fh return counter/flag that AH=6Eh clears
  7143.         70h ???
  7144.         AL = ???
  7145.         71h ???
  7146.         AL = ???
  7147.         72h ???
  7148.         73h insert byte at end of keyboard buffer
  7149.         AL = byte to insert
  7150.         Return: AL = 00h if byte inserted
  7151.                = 01h if no room to store
  7152.         74h insert byte at front of keyboard buffer
  7153.         AL = byte to insert
  7154.         Return: AL = 00h if byte inserted
  7155.                = 01h if no room to store
  7156.         75h ???
  7157.         76h get keyboard "stack" status
  7158.         AL = 'K' if kbd read will read physical keyboard
  7159.              'S' if it will read EBL internal keyboard buffer
  7160.         AH = ???
  7161.         77h clear internal keyboard buffer
  7162.         78h ???
  7163.         AL = ???
  7164.         79h ???
  7165.         7Ah ???
  7166.         AL = ???
  7167.         7Bh ???
  7168.         AL = ???
  7169.         7Ch ???
  7170.         AL = ???
  7171.         7Dh ???
  7172.         AL = ???
  7173.         7Eh clear buffer for ???
  7174.         7Fh installation check
  7175.         Return: CX = version in BCD
  7176.             DI = segment of ???
  7177.             BX = segment of next program's PSP???
  7178. Program: Extended Batch Language is a batch-file enhancer by Seaware
  7179. Notes:    the chaining does not check whether the interrupt had been hooked
  7180.       before, so if you try to chain when the previous vector was
  7181.       0000h:0000h, you'll be in trouble
  7182.     functions 72h and 7Ah-7Dh appear to be interfaces to the optional
  7183.       floating-point and extended function packages
  7184. Index:    installation check;EBL|installation check;Extended Batch Language
  7185. --------d-64---------------------------------
  7186. INT 64 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  7187. Note:    This vector is overwritten by Pdisk to install custom harddrive types.
  7188.       It can either destroy 4 vectors and take no memory or TSR and take
  7189.       up some memory.
  7190. SeeAlso: INT 65"Pdisk"
  7191. --------N-6401-------------------------------
  7192. INT 64 U - BW-NFS - BWRPC - ???
  7193.     AH = 01h
  7194.     ES:BX -> ??? (at least 8 bytes)
  7195.     ES:BP -> DWORD ???
  7196.     ???
  7197. Return: CF clear if successful
  7198.         ???
  7199.     CF set on error
  7200.         CX = 0000h
  7201. Notes:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  7202.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  7203.       consecutive interrupt (64h by default) if it is loaded
  7204.     the BWRPC installation check consists of determining the interrupt
  7205.       vector assigned to it (two more than the value returned by reading
  7206.       the ETHDEV27 device), and testing whether the word immediately
  7207.       preceding the interrupt handler is 4257h ('BW')
  7208. SeeAlso: INT 62"BW-TCP",INT 63"BW-TCP"
  7209. Index:    installation checks;BWRPC
  7210. --------N-6402-------------------------------
  7211. INT 64 U - BW-NFS - BWRPC - ???
  7212.     AH = 02h
  7213.     DS:DI -> ???
  7214. Return: ???
  7215. Note:    this call is passed directly through to INT 62/AH=07h
  7216. SeeAlso: INT 62"BW-TCP"
  7217. --------N-6403-------------------------------
  7218. INT 64 U - BW-NFS - BWRPC - ADD ???
  7219.     AH = 03h
  7220.     AL = ???
  7221.     BP = ???
  7222.     ES:SI -> ???
  7223. Return: ???
  7224. Note:    this call is passed directly through to INT 62/AH=0Bh
  7225. SeeAlso: AH=04h,INT 62"BW-TCP"
  7226. --------N-6404-------------------------------
  7227. INT 64 U - BW-NFS - BWRPC - REMOVE ???
  7228.     AH = 04h
  7229.     BP = ???
  7230. Return: ???
  7231. Note:    this call is passed directly through to INT 62/AH=0Ch
  7232. SeeAlso: AH=03h,INT 62"BW-TCP"
  7233. --------N-6405-------------------------------
  7234. INT 64 U - BW-NFS - BWRPC - ???
  7235.     AH = 05h
  7236.     CX = ???
  7237. Return: ???
  7238. Note:    this call is passed directly through to INT 62/AH=13h
  7239. SeeAlso: INT 62"BW-TCP"
  7240. --------N-6406-------------------------------
  7241. INT 64 U - BW-NFS - BWRPC - ???
  7242.     AH = 06h
  7243.     ES:SI -> ???
  7244. Return: AL = 00h if CF clear
  7245. Note:    this call is passed directly through to INT 62/AH=14h
  7246. SeeAlso: INT 62"BW-TCP"
  7247. --------N-6407-------------------------------
  7248. INT 64 U - BW-NFS - BWRPC - GET IP ADDRESS
  7249.     AH = 07h
  7250. Return: CX:DX = IP address
  7251. --------N-6410-------------------------------
  7252. INT 64 U - BW-NFS - BWRPC - CALL ETHDEV.SYS
  7253.     AH = 10h
  7254.     AL = ETHDEV function number
  7255.     other registers as appropriate for ETHDEV call
  7256. Return: as returned by ETHDEV
  7257. Note:    this call is passed directly through to INT 62
  7258. SeeAlso: INT 62"BW-TCP"
  7259. --------N-6411-------------------------------
  7260. INT 64 U - BW-NFS - BWRPC - NOP???
  7261.     AH = 11h
  7262. Return: CF clear
  7263. --------N-64FE-------------------------------
  7264. INT 64 - BW-NFS - BWRPC - MAP EMS PAGE FRAME
  7265.     AH = FEh
  7266.     AL = direction
  7267.         00h map in driver's memory block
  7268.         01h map out driver's memory block
  7269. Return: CF clear if successful
  7270.     CF set on error
  7271.         AL = error code
  7272. Note:    this call is passed through directly to ETHDEV.SYS (see INT 62/AH=FEh)
  7273. SeeAlso: INT 21/AH=3Fh"BW-TCP",INT 62/AH=FEh,INT 63"BW-TCP"
  7274. --------*-65---------------------------------
  7275. INT 65 - reserved for user interrupt
  7276. --------d-65---------------------------------
  7277. INT 65 - Adaptec controllers - DRIVE 1 DATA
  7278. Note:    this vector stores the second four bytes of the parameter table for
  7279.       hard disk 1
  7280. SeeAlso: INT 64"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
  7281. --------h-65---------------------------------
  7282. INT 65 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  7283. SeeAlso: INT 64"DG10",INT 66"DG10"
  7284. --------N-65---------------------------------
  7285. INT 65 - FTP Software NDIS-Packet Driver adapter - POST PROCESSING INTERRUPT
  7286. --------U-65---------------------------------
  7287. INT 65 - SD.COM v6.2
  7288.    The unregistered version of SD62.COM uses the low byte of this vector to
  7289.    count the number of invocations, displaying a registration reminder each
  7290.    time after the 20th use.
  7291. --------d-65---------------------------------
  7292. INT 65 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  7293. SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
  7294. --------s-65---------------------------------
  7295. INT 65 - Ad Lib SOUND.COM - INTERFACE
  7296.     SI = function number (see also entries below)
  7297.         0000h Init
  7298.         0002h RelTimeStart
  7299.         0003h SetState
  7300.         0004h GetState
  7301.         0005h Flush
  7302.         0006h SetMode
  7303.         0007h GetMode
  7304.         0008h SetRelVolume
  7305.         0009h SetTempo
  7306.         000Ah SetTranspose
  7307.         000Bh GetTranspose
  7308.         000Ch SetActVoice
  7309.         000Dh GetActVoice
  7310.         000Eh PlayNoteDel
  7311.         000Fh PlayNote
  7312.         0010h SetTimbre
  7313.         0011h SetPitch
  7314.         0012h SetTickBeat
  7315.         0013h NoteOn
  7316.         0014h NoteOff
  7317.         0015h Timbre
  7318.         0016h SetPitchBend
  7319.         0017h WaveForm
  7320.     ES:BX -> arguments
  7321. Note:    the installation check consists of checking for the signature block
  7322.       immediately preceding the interrupt handler (see below)
  7323. SeeAlso: SI=8000h
  7324. Index:    installation check;Ad Lib SOUND.COM
  7325.  
  7326. Format of signature block:
  7327. Offset    Size    Description
  7328.  00h    WORD    version number
  7329.  02h 19 BYTEs    "SOUND-DRIVER-AD-LIB"
  7330.  15h    BYTE    01h
  7331.  16h    BYTE    01h
  7332.  17h    BYTE    00h
  7333. --------s-65----SI0000-----------------------
  7334. INT 65 - Ad Lib SOUND.COM - INITIALIZE (RESET)
  7335.     SI = 0000h
  7336. --------s-65----SI0003-----------------------
  7337. INT 65 - Ad Lib SOUND.COM - SET STATE
  7338.     SI = 0003h
  7339.     ES:BX -> WORD state = 0000h disabled
  7340.                 = 0001h enabled
  7341. SeeAlso: SI=0004h
  7342. --------s-65----SI0004-----------------------
  7343. INT 65 - Ad Lib SOUND.COM - GET STATE
  7344.     SI = 0004h
  7345. Return: AX = 0000h all done playing sounds
  7346.        = else  still playing sounds
  7347. SeeAlso: SI=0003h
  7348. --------s-65----SI0006-----------------------
  7349. INT 65 - Ad Lib SOUND.COM - SET MODE
  7350.     SI = 0006h
  7351.     ES:BX -> WORD mode = 0000h melodic
  7352.                = 0001h percussive
  7353. SeeAlso: SI=0007h
  7354. --------s-65----SI0007-----------------------
  7355. INT 65 - Ad Lib SOUND.COM - GET MODE
  7356.     SI = 0007h
  7357. Return: AX = 0000h melodic
  7358.        = 0001h percussive
  7359. SeeAlso: SI=0006h
  7360. --------s-65----SI000C-----------------------
  7361. INT 65 - Ad Lib SOUND.COM - SET ACTIVE VOICE
  7362.     SI = 000Ch
  7363.     ES:BX -> WORD voice = 0000h to 0008h
  7364. SeeAlso: SI=000Dh
  7365. --------s-65----SI000D-----------------------
  7366. INT 65 - Ad Lib SOUND.COM - GET ACTIVE VOICE
  7367.     SI = 000Dh
  7368. Return: AX = voice (0000h to 0008h)
  7369. SeeAlso: SI=000Ch
  7370. --------s-65----SI8000-----------------------
  7371. INT 65 u - Media Vision FM.COM v4.1a+ - GET INTERNAL DATA STRUCTURES
  7372.     SI = 8000h
  7373. Return: DX:AX -> internal data structures
  7374. Program: FM.COM is an Ad Lib SOUND.COM-compatible driver for Media Vision's
  7375.       Pro Audio Spectrum sound boards
  7376. SeeAlso: SI=8001h
  7377. --------s-65----SI8001-----------------------
  7378. INT 65 u - Media Vision FM.COM v4.1a+ - GET VOICE COUNT
  7379.     SI = 8001h
  7380. Return: AX = ???
  7381.     DX = number of voices??? (09h or 0Bh)
  7382. SeeAlso: SI=8000h
  7383. --------s-65----SI8002-----------------------
  7384. INT 65 - Media Vision FM.COM v4.1a+ - START BACKGROUND FM SOUNDS
  7385.     SI = 8002h
  7386. SeeAlso: SI=8003h
  7387. --------s-65----SI8003-----------------------
  7388. INT 65 - Media Vision FM.COM v4.1a+ - STOP BACKGROUND FM SOUNDS
  7389.     SI = 8003h
  7390. SeeAlso: SI=8002h
  7391. --------s-65----SI8004-----------------------
  7392. INT 65 U - Media Vision FM.COM v4.1a+ - GET ???
  7393.     SI = 8004h
  7394. Return: AX = ??? (0280h)
  7395.     DX = ??? (01A0h)
  7396. --------s-65----SI8005-----------------------
  7397. INT 65 U - Media Vision FM.COM v4.1a+ - ???
  7398.     SI = 8005h
  7399.     ???
  7400. Return: ???
  7401. SeeAlso: SI=8000h
  7402. --------S-65---------------------------------
  7403. INT 65 U - EZRECV v1.0 - API
  7404.     AX = function
  7405.         0000h ???
  7406.         Return: AX = ??? or FFFFh
  7407.         0001h ???
  7408.         Return: AX = status (0000h or 0001h)
  7409.         0002h ???
  7410.         Return: AX = status (0000h or 0001h)
  7411.         0003h set ??? to 0001h
  7412.         Return: AX = 0000h
  7413.         0004h ???
  7414.         Return: AX = ???
  7415. Return: BH = COM port being used
  7416.     BL = speed???
  7417.     CH = ???
  7418.     CL = ???
  7419.     DX = ???
  7420.     DS = ???
  7421.     ES = EZRECV data segment
  7422. Program: EZRECV is a background Zmodem file receiver by Express Consulting
  7423. --------*-66---------------------------------
  7424. INT 66 - reserved for user interrupt
  7425. --------d-66---------------------------------
  7426. INT 66 - Adaptec controllers - DRIVE 1 DATA
  7427. Note:    this vector stores the third four bytes of the parameter table for
  7428.       hard disk 1
  7429. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 67"Adaptec"
  7430. --------h-66---------------------------------
  7431. INT 66 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  7432. SeeAlso: INT 64"DG10"
  7433. --------N-66---------------------------------
  7434. INT 66 C - Nanosoft, Inc. TurboNET - NETWORK PROCESSING ???
  7435. Program: TurboNET is a NetBIOS-based file redirector and server
  7436. Note:    hooked but not used (IRET) by both redirector and server; called from
  7437.       server's INT 28 handler
  7438. SeeAlso: INT 2F/AX=8100h
  7439. --------d-66---------------------------------
  7440. INT 66 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  7441. SeeAlso: INT 64"Pdisk",INT 67"Pdisk"
  7442. --------W-66---------------------------------
  7443. INT 66 - Microsoft Windows VITD.386 Virtual Interval Timer
  7444. Note:    This Windows 3.x Virtual Device Driver implements a virtual timer
  7445.       which will expire and call INT 66.  This timer can be used to
  7446.       calculate elapsed execution time etc.
  7447. --------K-66---------------------------------
  7448. INT 66 - Newkey v5.4 - INSTALLATION VECTOR
  7449. Return: immediately (IRET)
  7450. Program: Newkey is a shareware keyboard macro program by Frank A. Bell
  7451. Note:    the installation check consists of testing for the signature bytes
  7452.       FDh FCh FFh FEh at offset 03h in the interrupt handlers segment;
  7453.       Newkey may use any interrupt from 60h through 67h and will install
  7454.       on the highest vector in this range which is unused (normally 66h)
  7455. BUG:    the code obviously intends to use INT F0-FE, INT 70-77, and INT 68-6F
  7456.       before falling back to INT 60-67, but only uses the last of these
  7457.       ranges in v5.4
  7458. SeeAlso: INT 2F/AX=E300h
  7459. Index: installation checks;Newkey|Newkey;installation check
  7460. --------F-6601-------------------------------
  7461. INT 66 - BitFax Scheduler - SET MODE???
  7462.     AH = 01h
  7463. SeeAlso: AH=02h
  7464. --------F-6602-------------------------------
  7465. INT 66 - BitFax Scheduler - SET MODE???
  7466.     AH = 02h
  7467. SeeAlso: AH=01h
  7468. --------F-6603-------------------------------
  7469. INT 66 - BitFax Scheduler - SCHEDULE FAX TRANSMISSIONS
  7470.     AH = 03h
  7471.     ???
  7472. Return: ???
  7473. SeeAlso: AH=05h
  7474. --------F-6604-------------------------------
  7475. INT 66 - BitFax Scheduler - GET STATUS???
  7476.     AH = 04h
  7477. Return: AX = ??? (0000h or 0001h)
  7478.     DX = BitSched version???  (for versions >= 3.00)
  7479.         9796h (ver. 3.00)
  7480.         97E6h (ver. 3.02)
  7481.         92D0h (ver. 3.04.06)
  7482.         9510h (ver. 3.06.02)
  7483. SeeAlso: AH=06h,AX=3345h,INT 2F/AX=8000h"FaxBIOS"
  7484. --------F-6605-------------------------------
  7485. INT 66 - BitFax Scheduler - CONVERT FILE AND SEND FAX
  7486.     AH = 05h
  7487.     BX:CX -> command block (see below)
  7488.     ???
  7489. Return: ???
  7490. SeeAlso: AH=03h
  7491.  
  7492. Format of command block:
  7493. Offset    Size    Description
  7494.  00h 18 BYTEs    configuration bytes???
  7495.  12h    BYTEs    ASCIZ temporary file name to place converted fax
  7496.  52h    BYTEs    ASCIZ directory containing BitFax executables
  7497.  92h    BYTEs    ASCIZ telephone number
  7498.  C2h    BYTE    00h don't send cover page
  7499.         01h send cover page
  7500.  C3h 15 BYTEs    configuration bytes???
  7501.  E2h    BYTEs    ASCIZ path of BITFAX.TRA file (containing additional
  7502.         configuration information???)
  7503. 122h    BYTEs    configuration bytes???
  7504. 12Ch    BYTE    00h don't send cover page
  7505.         01h send cover page
  7506. 12Dh  7 BYTEs    configuration bytes???
  7507. 134h    BYTEs    ASCIZ path of file to send
  7508. 174h    BYTEs    more configuration bytes???
  7509.     ???
  7510. --------F-6606-------------------------------
  7511. INT 66 - BitFax Scheduler - SET MODE???
  7512.     AH = 06h
  7513. Return: DX = BitSched version??? (same as AH=04h)
  7514. SeeAlso: AH=04h
  7515. --------s-660688-----------------------------
  7516. INT 66 - IBMSND driver - PLAY 8-BIT DIGITIZED SOUND
  7517.     AX = 0688h
  7518.     DS:SI -> SNDSTRUC (see below)
  7519. Return: ???
  7520. Program: The IBMSND driver is part of John W. Ratcliff's
  7521.        The IBM Digitized Sound Package
  7522. Note:    the installation check consists of looking for a valid signature
  7523.       string six bytes prior to the interrupt handler; this string may
  7524.       be either "KERN" or "MIDI" (in the latter case, call AX=0701h to
  7525.       determine whether IBMSND is installed)
  7526. SeeAlso: AX=068Bh,AX=068Fh,AX=0701h
  7527.  
  7528. Format of SNDSTRUC:
  7529. Offset    Size    Description
  7530.  00h    DWORD    -> audio data
  7531.  04h    WORD    length of audio data in bytes
  7532.  06h    DWORD    -> playback status flag
  7533.  0Ah    WORD    playback frequency
  7534. --------s-660689-----------------------------
  7535. INT 66 - IBMSND driver - REPORT SOUND DRIVER STATUS
  7536.     AX = 0689h
  7537. Return: AX = status
  7538.         0000h no sound playing
  7539.         0001h sound effect is currently playing
  7540. SeeAlso: AX=0688h,AX=068Bh,AX=068Ch
  7541. --------s-66068A-----------------------------
  7542. INT 66 - IBMSND driver - PREFORMAT SOUND
  7543.     AX = 068Ah
  7544.     DS:SI -> SNDSTRUC (see AX=0688h)
  7545. Desc:    convert audio data into output hardware format
  7546. SeeAlso: AX=068Bh
  7547. --------s-66068B-----------------------------
  7548. INT 66 - IBMSND driver - PLAY PREFORMATTED SOUND
  7549.     AX = 068Bh
  7550.     DS:SI -> SNDSTRUC (see AX=0688h)
  7551. Return: AX = ???
  7552. SeeAlso: AX=0688h,AX=068Ah,AX=068Fh
  7553. --------s-66068C-----------------------------
  7554. INT 66 - IBMSND driver - REPORT AUDIO DRIVER CAPABILITIES
  7555.     AX = 068Ch
  7556. Return: AX = capabilities (see below)
  7557.     DX = playback rate if fixed-frequency playback
  7558. SeeAlso: AX=0689h,AX=068Dh
  7559.  
  7560. Bitfields for capabilities:
  7561.  bit 0    can play audio in background
  7562.  bit 1    data is massaged
  7563.  bit 2    driver plays at fixed frequency, resampling input data to fit
  7564.  bit 3    driver uses timer interrupt
  7565. --------s-66068D-----------------------------
  7566. INT 66 - IBMSND driver - REPORT CURRENT SAMPLE ADDRESS
  7567.     AX = 068Dh
  7568. Return: AX = current playback address
  7569. Desc:    determine what point in the audio data the playback has reached, for
  7570.       synchronization with video or animation effects
  7571. Notes:    this function applies to background playback only
  7572.     the reported address may be an approximation rather than the exact
  7573.       address
  7574. SeeAlso: AX=068Ch,AX=0691h
  7575. --------s-66068E-----------------------------
  7576. INT 66 - IBMSND driver - SET CALLBACK ADDRESS
  7577.     AX = 068Eh
  7578.     BX:DX -> callback function
  7579.         0000h:0000h to disable callback
  7580.     DS = value to load into DS when calling the callback function
  7581. Desc:    specify the function to be called when playback of a sound effect is
  7582.       completed
  7583. Note:    the callback function will typically be called during a hardware
  7584.       interrupt, so all the usual precautions should be taken except for
  7585.       preserving registers
  7586. SeeAlso: AX=0691h
  7587. --------s-66068F-----------------------------
  7588. INT 66 - IBMSND driver - STOP CURRENT SOUND
  7589.     AX = 068Fh
  7590. Desc:    cause any currently-playing sound effect to be terminated
  7591. SeeAlso: AX=0688h,AX=068Bh
  7592. --------s-660690-----------------------------
  7593. INT 66 - IBMSND driver - "SetAudioHardware" SET UP HARDWARE INFO [obsolete]
  7594.     AX = 0690h
  7595. Note:    this function is no longer implemented
  7596. --------s-660691-----------------------------
  7597. INT 66 - IBMSND driver - REPORT CALLBACK ADDRESS
  7598.     AX = 0691h
  7599. Return: AX:DX -> current callback function
  7600.     BX = original caller's DS register
  7601. Program: The IBMSND driver is part of John W. Ratcliff's
  7602.        The IBM Digitized Sound Package
  7603. SeeAlso: AX=068Eh
  7604. --------s-660701-----------------------------
  7605. INT 66 - IBM Digitized Sound Package MIDI driver - GET DIGITIZED SOUND CAPABIL
  7606.     AX = 0701h
  7607. Return: AX = digitized sound capabilities
  7608.         0000h if digitized sound driver (functions 06xxh) not available
  7609. Note:    the installation check for the MIDI driver is to test for the signature
  7610.       "MIDI" six bytes before the interrupt handler
  7611. SeeAlso: AX=0688h
  7612. ----------6610-------------------------------
  7613. INT 66 - PenDOS - TDMOUSE.EXE - GET ???
  7614.     AH = 10h
  7615. Return: CF clear
  7616.     AX = 0000h
  7617.     BX = ??? (0012h)
  7618.     DX:CX -> TDMOUSE INT 33 handler (IRET to hide mouse from other apps)
  7619. Program: TDMOUSE is a PenDOS hardware driver which allows a mouse to emulate
  7620.       a touchpad; PenDOS is a set of programs by Communication Intelligence
  7621.       Corporation which makes applications pen-aware
  7622. ----------6611-------------------------------
  7623. INT 66 - PenDOS - TDMOUSE.EXE - SET ??? HANDLER
  7624.     AH = 11h
  7625.     DX:BX -> new handler for ???
  7626. Return: CF clear
  7627.     AX = 0000h
  7628.     DX:BX -> old handler for ??? (points at RETF by default)
  7629. ----------6612-------------------------------
  7630. INT 66 - PenDOS - TDMOUSE.EXE - INITIALIZE
  7631.     AH = 12h
  7632. Return:    CF clear
  7633.     AX = 0000h
  7634. Note:    this function calls the old mouse handler with functions 0000h, 0002h,
  7635.       0007h, 0008h, 000Fh, 0004h, and 000Ch (in that order)
  7636. SeeAlso: AH=13h
  7637. ----------6613-------------------------------
  7638. INT 66 - PenDOS - TDMOUSE.EXE - SHUTDOWN???
  7639.     AH = 13h
  7640. Return: CF clear
  7641.     other register as returned by INT 33/AX=0000h
  7642. SeeAlso: AH=12h
  7643. ----------6614-------------------------------
  7644. INT 66 - PenDOS - TDMOUSE.EXE - ???
  7645.     AH = 14h
  7646.     BX = ???
  7647.     CX = ???
  7648. Return: CF clear
  7649.     AX = 0000h
  7650. ----------6615-------------------------------
  7651. INT 66 - PenDOS - TDMOUSE.EXE - SET ??? HANDLER
  7652.     AH = 15h
  7653.     DX:BX -> new handler for ???
  7654. Return: CF clear
  7655.     AX = 0000h
  7656.     DX:BX -> old handler (points at RETF by default)
  7657. ----------6616-------------------------------
  7658. INT 66 - PenDOS - TDMOUSE.EXE - UNUSED FUNCTIONS
  7659.     AH = 16h to 1Fh
  7660. Return: CF set
  7661. Program: TDMOUSE is a PenDOS hardware driver which allows a mouse to emulate
  7662.       a touchpad; PenDOS is a set of programs by Communication Intelligence
  7663.       Corporation which makes applications pen-aware
  7664. ----------6621-------------------------------
  7665. INT 66 - PenDOS - PINK - ???
  7666.     AH = 21h
  7667. Return: CF clear if successful
  7668.     CF set on error
  7669. Note:    this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
  7670. ----------6622-------------------------------
  7671. INT 66 - PenDOS - PINK - ???
  7672.     AH = 22h
  7673.     DX:BX -> ???
  7674.     CL = ???
  7675. Return: CF clear if successful
  7676.     CF set on error
  7677.     ???
  7678. SeeAlso: AH=24h
  7679. ----------6623-------------------------------
  7680. INT 66 - PenDOS - PINK - ???
  7681.     AH = 23h
  7682.     ???
  7683. Return: CF clear if successful
  7684.     CF set on error
  7685.     ???
  7686. ----------6624-------------------------------
  7687. INT 66 - PenDOS - PINK - ???
  7688.     AH = 24h
  7689.     DX:BX -> ???
  7690.     CL = ???
  7691. Return: CF clear if successful
  7692.     CF set on error
  7693.     ???
  7694. SeeAlso: AH=22h
  7695. ----------6625-------------------------------
  7696. INT 66 - PenDOS - PINK - ???
  7697.     AH = 25h
  7698.     CL = ??? (NOP if 00h)
  7699.     ???
  7700. Return: CF clear if successful
  7701.     CF set on error
  7702.     ???
  7703. ----------6627-------------------------------
  7704. INT 66 - PenDOS - PINK - ???
  7705.     AH = 27h
  7706.     BL = ???
  7707.     BH = ???
  7708.     CL = ??? (0-3)
  7709.     DL = ??? (> BL)
  7710.     DH = ??? (> BH)
  7711. Return: ???
  7712. ----------6628-------------------------------
  7713. INT 66 - PenDOS - PINK - ???
  7714.     AH = 28h
  7715.     ???
  7716. Return: CF clear if successful
  7717.     CF set on error
  7718.     ???
  7719. Note:    this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
  7720. ----------6629-------------------------------
  7721. INT 66 - PenDOS - PINK - ???
  7722.     AH = 29h
  7723.     ???
  7724. Return: ???
  7725. Note:    this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
  7726. ----------662A-------------------------------
  7727. INT 66 - PenDOS - PINK - ???
  7728.     AH = 2Ah
  7729.     DL = ??? (nonzero)
  7730.     DH = ??? (nonzero)
  7731. Return: CF clear if successful
  7732.     CF set on error
  7733.     ???
  7734. ----------662B-------------------------------
  7735. INT 66 - PenDOS - PINK - ???
  7736.     AH = 2Bh
  7737.     ???
  7738. Return: CF clear if successful
  7739.     CF set on error
  7740.     ???
  7741. ----------662F-------------------------------
  7742. INT 66 - PenDOS - PINK - INITIALIZE
  7743.     AH = 2Fh
  7744.     ???
  7745. Return: AX = status
  7746.         0000h failed
  7747.         FFFFh successful
  7748.     ???
  7749. Note:    this function sets ??? flag or counter to FFFFh and hooks INT 1Ch
  7750. --------F-663345-----------------------------
  7751. INT 66 - BitFax Scheduler - REMOVE TSR FROM MEMORY
  7752.     AX = 3345h
  7753. Return: AX = FFFFh error removing TSR
  7754. Note:    the installation check consists of checking for the signature
  7755.       "BitFax Scheduler" beginning two bytes past the interrupt handler
  7756. SeeAlso: AH=04h,INT 2F/AH=2Ah,INT 2F/AX=CB00h
  7757. Index:    installation check;BitFax Scheduler
  7758. ----------6640-------------------------------
  7759. INT 66 - PenDOS - PKEYUS - GET VERSION
  7760.     AH = 40h
  7761. Return: CF clear
  7762.     AX = 0000h
  7763.     BH = major version (02h for version bundled with IBM DOS 6.1)
  7764.     BL = minor version (00h for version bundled with IBM DOS 6.1)
  7765.     DL = ??? (4Eh)
  7766.     DH = ??? (0Eh)
  7767. ----------6641-------------------------------
  7768. INT 66 - PenDOS - PKEYUS - SET ???
  7769.     AH = 41h
  7770.     BX = ???
  7771.     CL = ??? (08h-20h)
  7772.     DL = screen column??? (<= 50h)
  7773.     DH = screen row???  (<= 3Ch)
  7774. Return: AX = status (0000h successful, 0001h error)
  7775. Note:    this function also sets an internal flag
  7776. SeeAlso: AH=42h,AH=43h
  7777. ----------6642-------------------------------
  7778. INT 66 - PenDOS - PKEYUS - ???
  7779.     AH = 42h
  7780. Return: CF clear
  7781.     AX = 0000h
  7782. Note:    this function also clears the flag set by AH=41h
  7783. SeeAlso: AH=41h
  7784. ----------6643-------------------------------
  7785. INT 66 - PenDOS - PKEYUS - ???
  7786.     AH = 43h
  7787.     BX = ???
  7788.     DX = ???
  7789. Return: AX = status
  7790.         0000h if AH=41h flag set
  7791.         else
  7792.         AH = ???
  7793.         AL = ???
  7794.         BX = ???
  7795.         DX = ???
  7796. SeeAlso: AH=41h    
  7797. ----------6644-------------------------------
  7798. INT 66 - PenDOS - PKEYUS - UNUSED FUNCTIONS
  7799.     AH = 44h to 4Fh
  7800. Return: CF set
  7801. ----------6650-------------------------------
  7802. INT 66 - PenDOS - PMOUSE - SET ???
  7803.     AH = 50h
  7804.     BX = ???
  7805.     CH = ???
  7806.     DX = ???
  7807. Return: CF clear
  7808.     AX = 0000h
  7809. ----------6651-------------------------------
  7810. INT 66 - PenDOS - PMOUSE - NOP
  7811.     AH = 51h
  7812. Return: CF set
  7813. ----------6652-------------------------------
  7814. INT 66 - PenDOS - PMOUSE - ???
  7815.     AH = 52h
  7816.     BX = ???
  7817.     CL = ???
  7818.     DX = ???
  7819. Return: ???
  7820. ----------6653-------------------------------
  7821. INT 66 - PenDOS - PMOUSE - UNUSED FUNCTIONS
  7822.     AH = 53h to 57h
  7823. Return: CF set
  7824. ----------66---------------------------------
  7825. INT 66 - PenDOS - PMOUSE - ALTERNATE API
  7826.     AH = function (58h-5Fh)
  7827. Note:    these functions exactly duplicate AH=50h-57h
  7828. ----------66C5-------------------------------
  7829. INT 66 - PenDOS - VLOAD - API
  7830.     AH = C5h
  7831.     ???
  7832. Return: ???
  7833. --------t-66FFFBBXFFFB-----------------------
  7834. INT 66 - MicroHelp Stay-Res Plus - ???
  7835.     AX = FFFBh
  7836.     BX = FFFBh
  7837.     ???
  7838. Return: ???
  7839. SeeAlso: AX=FFFEh,INT 2D"AMIS"
  7840. --------t-66FFFEBXFFFE-----------------------
  7841. INT 66 - MicroHelp Stay-Res/Stay-Res Plus - UNINSTALL
  7842.     AX = FFFEh
  7843.     BX = FFFEh
  7844. Return: only if unsuccessful
  7845. Notes:    installation check is for the interrupt handler to begin with the bytes
  7846.       FBh 9Ch or 9Ch FAh, and the program name (not case-sensitive) to
  7847.       appear at offset 0005h (older versions) or the offset returned by
  7848.       AX=FFFFh/BX=FFF0h in the interrupt handler segment.
  7849.     Programs which use Stay-Res include ThesPlus (program name "THESPLUS")
  7850.       and Personal Calendar (program name "CAL") by Paul Mun~oz-Colman.
  7851. SeeAlso: AX=FFFBh,AX=FFFFh,INT 2D"AMIS"
  7852. Index:    installation check;MicroHelp Stay-Res|installation check;ThesPlus
  7853. Index:    installation check;Personal Calendar|installation check;CAL
  7854. --------t-66FFFFBXFFF0-----------------------
  7855. INT 66 - MicroHelp Stay-Res Plus - FIND PROGRAM NAME
  7856.     AX = FFFFh
  7857.     BX = FFF0h
  7858. Return: DI = offset of program name in interrupt handler segment
  7859. SeeAlso: AX=FFFBh,AX=FFFEh,INT 2D"AMIS"
  7860. --------d-67---------------------------------
  7861. INT 67 - Adaptec controllers - DRIVE 1 DATA
  7862. Note:    this vector stores the last four bytes of the parameter table for
  7863.       hard disk 1
  7864. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 66"Adaptec"
  7865. --------d-67---------------------------------
  7866. INT 67 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  7867. SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
  7868. --------I-67---------------------------------
  7869. INT 67 - Sangoma CCPOP 3270 resident module
  7870. SeeAlso: INT 61"Sangoma",INT 68"Sangoma"
  7871. --------U-67---------------------------------
  7872. INT 67 - CUCKOO.COM - INSTALLATION CHECK
  7873. Program: CUCKOO is a resident on-screen clock with optional hourly chime or
  7874.       cuckoo by an unknown author with revisions by Thomas A. Lundin
  7875. Note:    this is not a vector; when loaded for the first time, CUCKOO.COM uses
  7876.       the last unused (0000h:0000h) vector in the range 60h-67h to store
  7877.       the signature value 434Ch:4F4Bh ('CLOK')
  7878. --------N-6700-------------------------------
  7879. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE AND WAIT
  7880.     AH = 00h
  7881.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  7882. Return: AL = status (see below)
  7883. SeeAlso: AH=01h,AH=02h"PC-NET",INT 7F/AH=00h
  7884.  
  7885. Values for status:
  7886.  00h    successful
  7887.  01h    invalid function
  7888.  02h    semaphore already locked
  7889.  03h    unable to lock semaphore
  7890.  04h    semaphore space exhausted
  7891.  AH = semaphore owner if status=02h
  7892. --------N-6701-------------------------------
  7893. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE
  7894.     AH = 01h
  7895.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  7896. Return: AL = status (see AH=00h)
  7897.     AH = semaphore owner if status=02h
  7898. SeeAlso: AH=00h,AH=02h"PC-NET",INT 7F/AH=01h"Alloy"
  7899. --------N-6702-------------------------------
  7900. INT 67 - PC-NET, Alloy NTNX - UNLOCK SEMAPHORE
  7901.     AH = 02h
  7902.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  7903. Return: AL = status (see AH=00h)
  7904.     AH = semaphore owner if status=02h
  7905. SeeAlso: AH=00h,AH=01h"PC-NET",INT 7F/AH=02h
  7906. --------m-671E-------------------------------
  7907. INT 67 U - Qualitas 386MAX v7.00 - MEMLIMIT - INSTALLATION CHECK
  7908.     AH = 1Eh
  7909. Return: AH = 00h if installed
  7910.         AL destroyed
  7911.         ES:DI -> ASCII signature "MemLimit"
  7912. SeeAlso: AH=1Fh,INT 21/AX=4402h"386MAX"
  7913. --------m-671F-------------------------------
  7914. INT 67 U - Qualitas 386MAX v7.00 - MEMLIMIT - API
  7915.     AH = 1Fh
  7916.     DS:SI -> request packet (see below)
  7917. Return: AH = status (00h successful, 84h invalid function code, etc.)
  7918. SeeAlso: AH=1Eh
  7919.  
  7920. Format of request packet:
  7921. Offset    Size    Description
  7922.  00h    WORD    function code (00h-0Fh)
  7923.  02h    WORD    return code (see below)
  7924.  04h  4 BYTEs    ???
  7925.  08h    WORD    ???
  7926.     ???
  7927.  
  7928. Values for return code:
  7929.  00h    unknown request
  7930.  01h    invalid parameter for VCPI limit
  7931.  02h    VCPI limit set
  7932.  03h    invalid parameter for EMS limit
  7933.  04h    EMS limit set
  7934.  05h    DPMI disabled
  7935.  06h    XMS disabled
  7936.  07h    XMS limit set
  7937.  08h    unable to uninstall
  7938.  09h    unloaded
  7939. --------m-673F--CX5145-----------------------
  7940. INT 67 U - QEMM-386 v4.23+ - INSTALLATION CHECK
  7941.     AH = 3Fh
  7942.     CX = 5145h ("QE")
  7943.     DX = 4D4Dh ("MM")
  7944. Return: AH = 00h if installed
  7945.         ES:DI -> QEMM API entry point
  7946. Notes:    if no other program has hooked INT 67, an alternate installation
  7947.       check is to test for the string
  7948.       "QUARTERDECK EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  7949.       handler's segment; the word at offset 12h contains the offset in
  7950.       the handler's segment of the API entry point
  7951.     although this function is still undocumented, Quarterdeck has recently
  7952.       documented two alternate methods for determining the QEMM API entry
  7953.       point, as well as several of the API functions
  7954.     MICEMM (Micronics Expanded Memory Manager) versions 2.0C and 4D support
  7955.       the alternate QEMM installation check and entry point functions 00h,
  7956.       02h, and 03h; version 4D only provides the signature string if the
  7957.       commandline argument "DV" is provided
  7958.     386MAX v6.01 responds to this call, but DESQview 2.42 does not
  7959.       recognize the returned entry point as providing QEMM's capabilities
  7960.       because a) only functions 0Ch (different from QEMM 0Ch) and
  7961.             1000h-1009h are supported,
  7962.           b) status is returned as for EMS functions, not QEMM funcs
  7963.           c) the protected-mode entry point returned by function 1000h
  7964.             only supports functions 0Ch, 1004h, 1005h, and 100Ah
  7965.     the string check mentioned above is not supported by 386MAX
  7966. SeeAlso: AX=5BF0h,AH=DDh,AX=FFA5h,INT 15/AX=11DEh,INT 21/AX=4402h/SF=01h
  7967. SeeAlso: INT 21/AX=4402h"QEMM",INT 21/AX=4402h"386MAX",INT 2F/AX=D201h/BX=5145h
  7968.  
  7969. Call QEMM entry point with:
  7970.     AH = 00h get QEMM state (documented)
  7971.         Return: CF clear
  7972.             AL = QEMM state
  7973.                 bit 0 set if QEMM turned OFF
  7974.                 bit 1 set if in "Auto" mode
  7975.     AH = 01h set QEMM state (documented)
  7976.         AL = new state
  7977.             bit 0 set: place QEMM in OFF state
  7978.         Return: CF clear if successful
  7979.             CF set on error
  7980.     AH = 02h get ???
  7981.         Return: CF clear
  7982.             AX = segment of ??? data structure
  7983.             Data Structure
  7984.             Offset    Size    Description
  7985.              00h    DWORD    page table entry for ???
  7986.                 ???
  7987.     AH = 03h get QEMM version (documented)
  7988.         Return: CF clear
  7989.             AX = BX = version in BCD
  7990.         Notes:    the most recent official docs state that the version is
  7991.               returned in both AX and BX; older documentation only
  7992.               mentions BX
  7993.             MICEMM returns AX=0001h, BX unchanged
  7994.     AH = 04h allocate 4K page and set AUTO/ON mode
  7995.         Return: CF clear if successful
  7996.                 DX = page number of a 4K page
  7997.             CF set if unable to allocate page
  7998.         Note:    QEMM mode unchanged if not AUTO/OFF
  7999.     AH = 05h free 4K page and turn QEMM off
  8000.         DX = page number returned by function 04h
  8001.         Return: CF clear
  8002.         Note:    QEMM mode unchanged if not AUTO/ON
  8003.     AH = 06h make new mapping context???
  8004.         DX = page number of 4K page to hold page table
  8005.         Return: CF clear
  8006.         Note:    copies page table into given page and then sets ???
  8007.               page table entry to point at copy
  8008.     AH = 07h get mapping context
  8009.         Return: CF clear
  8010.             DX = page number of page table for current mapping
  8011.                 context
  8012.     AH = 08h set mapping context???
  8013.         DX = linear page number of page table
  8014.         Return: CF clear
  8015.     AH = 09h get linear page number for page table entry
  8016.         CX = page table index
  8017.         Return: CF clear
  8018.             DX = linear page number
  8019.     AH = 0Ah set linear page number for page table entry
  8020.         CX = page table index
  8021.         DX = linear page number
  8022.         Return: CF clear
  8023.     AH = 0Bh map 4K pages
  8024.         BX = number of pages
  8025.         CX = first page number (must be 0100h to allocate HMA)
  8026.         DX = EMS handle (memory belonging to EMS handle will be mapped
  8027.             into the address space beginning with the first page
  8028.             allocated to the handle)
  8029.         Return: AH = 00h
  8030.     AH = 0Ch get available memory
  8031.         Return: CF clear
  8032.             BX = 0001h
  8033.             CX = total 4K pages???
  8034.             DX = number of 4K pages free
  8035.     AH = 0Dh ??? (related to callbacks)
  8036.         AL = 00h/01h/02h ???
  8037.         Return: CF clear
  8038.     AH = 0Eh set ??? callbacks
  8039.         DS:BX -> FAR routine for ???
  8040.         ES:DX -> FAR routine for ???
  8041.         Return: CF clear
  8042.         Note:    DS:BX callback should return BX=???; ES:DX is called
  8043.               with BX=???, and should set the ??? from which the
  8044.               other handler read the value of BX.  BH and BL
  8045.               appear to be separate values.
  8046.     AH = 0Fh unmap 4K pages
  8047.         CX = first page number
  8048.         DX = number of pages
  8049.         Return: CF clear
  8050.             AL = 00h/01h if ???
  8051.         Note:    if CX=0100h and DX=0010h, the HMA is remapped to
  8052.               simulate a disabled A20
  8053.     AX = 1000h get protected-mode interface
  8054.         DS:SI -> 16-byte buffer for two GDT entries
  8055.         ES:DI -> buffer for 4K page table
  8056.         Return: CF clear
  8057.             EAX = offset of protected-mode API entry point
  8058.             DS:SI buffer filled with two GDT descriptors
  8059.                 first is QEMM code segment, second is data???
  8060.             ES:DI buffer filled with 4K page table
  8061.             DI points to first unused page table entry
  8062.         SeeAlso: INT 67/AX=DE01h
  8063.     AX = 1001h get CPU debug registers
  8064.         ES:DI -> buffer for debug registers (8 DWORDs)
  8065.         Return: CF clear
  8066.             BL = INT01 handling (see function 1002h)
  8067.             ES:DI buffer filled
  8068.     AX = 1002h set CPU debug registers
  8069.         BL = INT01 handling
  8070.             00h     reflect all debugging exceptions as V86-mode INT 01's
  8071.             else convert debugging exceptions other than single-step
  8072.                into V86-mode INT 03's, single-step to INT 01's
  8073.         ES:DI -> buffer containing debug registers (8 DWORDs)
  8074.         Return: CF clear
  8075.         Notes:    identical to INT 67/AX=DE09h if BL=01h
  8076.             the INT01 handling flag is set to 01h by the general-
  8077.               protection violation handler for certain privileged
  8078.               instructions
  8079.     AX = 1003h get machine status word CR0
  8080.         Return: CF clear
  8081.             EAX = contents of CR0
  8082.         SeeAlso: INT 67/AX=DE07h
  8083.     AX = 1004h allocate a 4K page
  8084.         Return: CF clear if successful
  8085.                 EDX = linear address of allocated page
  8086.             CF set on error
  8087.         SeeAlso: INT 67/AX=DE04h
  8088.     AX = 1005h free 4K page
  8089.         EDX = linear address of page to free
  8090.         Return: CF clear
  8091.         SeeAlso: INT 67/AX=DE05h
  8092.     AX = 1006h NOP
  8093.         Return: CF set
  8094.     AX = 1007h get maximum physical memory address
  8095.         Return: CF clear
  8096.             EDX = physical address of highest 4K memory page
  8097.         SeeAlso: INT 67/AX=DE02h
  8098.     AX = 1008h get physical address of page in first megabyte
  8099.         CX = page number (linear address shifted right 12 bits)
  8100.         Return: CF clear
  8101.             EDX = linear address of page
  8102.         SeeAlso: function 1F00h
  8103.     AX = 1009h switch to protected mode
  8104.         ESI = linear address in first megabyte of system reg values
  8105.             (see INT 67/AX=DE0Ch)
  8106.         interrupts disabled
  8107.         Return: interrupts disabled
  8108.             GDTR, IDTR, LDTR, TR loaded
  8109.             SS:ESP must have at least 16 bytes space, and the
  8110.                 entry point is required to set up a new stack
  8111.                 before enabling interrupts
  8112.             EAX, ESI, DS, ES, FS, GS destroyed
  8113.     AX = 100Ah switch back to virtual-86 mode
  8114.         DS = selector for data segment from function 1000h
  8115.         SS:ESP in first megabyte of linear memory
  8116.         interrupts disabled
  8117.         STACK:    QWORD  return address from FAR call to 32-bit segment
  8118.             DWORD  EIP
  8119.             DWORD  CS
  8120.             DWORD  reserved for EFLAGS
  8121.             DWORD  ESP
  8122.             DWORD  SS
  8123.             DWORD  ES
  8124.             DWORD  DS
  8125.             DWORD  FS
  8126.             DWORD  GS
  8127.         will switch to virtual86 mode with interrupts disabled, all
  8128.           segment registers loaded, and EAX destroyed.
  8129.     AH = 11h get memory type map
  8130.         AL = zero/nonzero ??? (set by QEMM.COM but apparently ignored
  8131.             by QEMM 6.00)
  8132.         ES:DI -> 256-byte buffer for memory types
  8133.         Return: CF clear
  8134.             BL = ???
  8135.             ES:DI buffer filled
  8136.         Note:    each byte of the buffer corresponds to a 4K page, and
  8137.               contains the type of that page: 00h = mappable,
  8138.               02h = mapped ROM, 03h = high RAM, 04h = excluded,
  8139.               05h = video, 06h = ROM, 07h = adapter ROM,
  8140.               08h = split ROM, 09h = page frame, 0Ah = RAMmable,
  8141.               0Bh = conventional
  8142.     AH = 12h get HIRAM chain
  8143.         Return: CF clear
  8144.             BX = segment of first MCB in high memory
  8145.                 0000h if no high memory
  8146.     AX = 1300h VIDRAMEGA???
  8147.         BL = 00h copy ???
  8148.              nonzero copy ??? (reverse)
  8149.         Return: CF clear
  8150.             AL = 00h if all pages clean
  8151.                = 01h if any page dirty
  8152.     AX = 1301h check if ???
  8153.         DX:DI = start address of range to check ???
  8154.         CX = length of range
  8155.         Return: CF clear
  8156.             CX = ??? (0000h or 1000h)
  8157.     AX = 1302h ???
  8158.         BL = ???
  8159.         BH = ???
  8160.         CX = ???
  8161.         SI = offset of ???
  8162.         DI = offset of ???
  8163.         ???
  8164.         Return: CF clear
  8165.             ???
  8166.         Note:    disables certain interrupts at the two 8259 PICs during
  8167.               execution; also modifies CRT controller during
  8168.               execution under certain circumstances
  8169.     AX = 1303h EMS allocation???
  8170.         BX = number of pages (less 1) of EMS to allocate
  8171.         Return: CF clear if successful
  8172.                 DX = EMS handle
  8173.             CF set on error
  8174.     AX = 1304h EMS deallocation
  8175.         DX = EMS handle
  8176.         Return: CF clear
  8177.     AX = 1305h ???
  8178.         CX = ???
  8179.         Return: CF clear
  8180.         Note:    disables certain interrupts at the two 8259 PICs during
  8181.               execution (see AX=130Ch)
  8182.     AX = 1306h set DESQview critical section counter address
  8183.         ES:BX -> WORD DESQview critical section counter or 0000h:0000h
  8184.         Return: CF clear
  8185.         Note:    also sets pointer in low-memory part of QEMM to current
  8186.               value of INT 15 if ES:BX not 0000h:0000h
  8187.     AX = 1307h ???
  8188.         Return: CF clear
  8189.         Note:    disables certain interrupts at the two 8259 PICs during
  8190.               execution (see AX=130Ch)
  8191.     AX = 1308h ???
  8192.         BL = ??? (zero/nonzero)
  8193.         Return: CF clear
  8194.     AX = 1309h Hercules mode-change support
  8195.         ES:BX -> new address for Hercules mode-change callback
  8196.         Return: CF clear
  8197.         Note:    the callback function is called whenever the CRTC mode
  8198.               register is written, with AL set to the value written
  8199.     AX = 130Ah virtualize EGA/VGA I/O ports 03C8h/03C9h???
  8200.         CX:DX -> buffer for storing CRTC register contents???
  8201.             or 0000h:0000h to disable
  8202.         Return: CF clear
  8203.     AX = 130Bh ???
  8204.         BL = ???
  8205.         Return: CF clear
  8206.             ???
  8207.     AX = 130Ch set interrupts to mask
  8208.         BX = interrupts to mask out during AX=1302h,AX=1307h,AX=1308h,
  8209.             AX=130Dh,AX=1310h (BL = master PIC, BH = slave PIC)
  8210.         Return: CF clear
  8211.     AX = 130Dh ???
  8212.         ???
  8213.         Return: CF clear
  8214.         Note:    disables certain interrupts at the two 8259 PICs during
  8215.               execution (see AX=130Ch)
  8216.     AX = 130Eh ??? (modifies CRT controller setup)
  8217.         ???
  8218.         Return: CF clear
  8219.     AX = 130Fh reset ???
  8220.         Return: CF clear
  8221.     AX = 1310h ???
  8222.         ???
  8223.         Return: CF clear
  8224.         Note:    disables certain interrupts at the two 8259 PICs during
  8225.               execution (see AX=130Ch)
  8226.     AX = 1311h set ???
  8227.         BL = ???
  8228.         Return: CF clear
  8229.     AX = 1312h (v6.02) NOP???
  8230.         Note:    called by DV 2.42, but appears to be a NOP in QEMM 6.02
  8231.     AX = 1400h ???
  8232.         ES:DI -> ??? data structure (at least 24 bytes)
  8233.         BL = ???
  8234.         Return: AX = ???
  8235.         Data structure
  8236.         Offset    Size    Description
  8237.          00h    WORD    ???
  8238.          02h    DWORD    far pointer to ???
  8239.          06h    DWORD    far pointer to ??? pointer array (see below)
  8240.          0Ah    DWORD    far pointer to ???
  8241.          0Eh    DWORD    ???
  8242.          12h    WORD    segment of ???
  8243.          14h    DWORD    far pointer to ???
  8244.         Pointer array
  8245.         Offset    Size    Description
  8246.          00h    WORD    number of pointers to follow
  8247.          02h  N DWORDs    far pointers to ???
  8248.         Note: QEMM converts the pointers into linear addresses in place
  8249.     AX = 1401h ???
  8250.         Return: CF clear
  8251.             ???
  8252.     AX = 1402h ???
  8253.         BL = function
  8254.             00h NOP
  8255.             01h ???
  8256.             02h ???
  8257.             other ???
  8258.         ES:DI -> ???
  8259.         Return: CF clear
  8260.             ???
  8261.         Data structure
  8262.         Offset    Size    Description
  8263.          00h    WORD    segment of ??? (X, word at X:0136h set to X)
  8264.          02h    WORD    segment of ??? (word at X:0124h set to this)
  8265.          04h    WORD    number of paragraphs of ???
  8266.          06h  3 WORDs    ??? (copied to X:0000h)
  8267.          0Ch    WORD    ???
  8268.     AX = 1403h add ??? to list and ??? (execute func 1406h)
  8269.         ES:DI -> ??? structure added to end of ??? list
  8270.             (at least 31 bytes, DWORD at offset 06h used for
  8271.              storing pointer to next struc, WORD at offset 00h
  8272.              seems to be a key or index)
  8273.         Return: CF clear
  8274.     AX = 1404h NOP
  8275.     AX = 1405h remove ??? from ??? list
  8276.         BX = key???
  8277.         Return: CF clear
  8278.     AX = 1406h ???
  8279.         ???
  8280.         Return: CF clear
  8281.             ???
  8282.     AX = 1407h ???
  8283.         ???
  8284.         Return: CF clear
  8285.             ???
  8286.     AX = 1408h ???
  8287.         ???
  8288.         Return: CF clear
  8289.             ???
  8290.     AX = 1409h ???
  8291.         ???
  8292.         Return: CF clear
  8293.             ???
  8294.     AX = 140Ah ???
  8295.         BX = ???
  8296.         Return: CF clear
  8297.             ???
  8298.     AX = 140Bh ???
  8299.         BX = ???
  8300.         Return: CF clear
  8301.             SI = segment of 256-byte buffer???
  8302.     AH = 15h ???
  8303.         ES:BX -> ??? or 0000h:0000h
  8304.         Return: CF clear
  8305.      ---QEMM v5.00+ ---
  8306.     AX = 1600h get memory access status
  8307.         ES:DI -> 256-byte buffer
  8308.         Return: ES:DI buffer filled
  8309.         Note:    each byte of the buffer indicates the status of a 4K
  8310.               page (bit 0 set if read, bit 1 set if written)
  8311.     AX = 1601h set memory access status
  8312.         ES:DI -> 256-byte buffer containing access statuses (see above)
  8313.     AH = 17h get memory usage statistics
  8314.         ES:DI -> 81-byte buffer for memory statistics (see below)
  8315.         Return: CF clear
  8316.      ---QEMM v5.11+ ---
  8317.     AH = 18h check whether conventional memory mapped into address range
  8318.         ES:BX = starting address
  8319.         CX = number of 4K pages
  8320.         Return: CF clear
  8321.             AL = 00h one or more pages is remapped
  8322.                  01h all pages in range are conventional memory
  8323.                 (physical address == virtual address)
  8324.     AH = 19h NOP
  8325.         Return: CF set
  8326.     AH = 1Ah I/O port access
  8327.         AL = subfunction
  8328.             00h get byte from I/O port
  8329.             Return: BL = port value
  8330.             01h send byte to I/O port
  8331.             BL = value to send
  8332.             02h send byte to I/O port, get byte from following port
  8333.             BH = value to send
  8334.             Return: BL = value read
  8335.             03h send bytes to two consecutive I/O ports
  8336.             BH = value for first I/O port (DX)
  8337.             BL = value for second I/O port (DX+1)
  8338.         DX = port number
  8339.         Return: CF clear
  8340.     AH = 1Bh MS Windows 3.x support
  8341.         AL = subfunction
  8342.             00h get EMM Import Structure address
  8343.             ES:DI -> buffer for EMM import data structure
  8344.             Return: CF set on error
  8345.                 CF clear if successful
  8346.             EMM Import data structure:
  8347.             Offset    Size    Description
  8348.              00h    DWORD    physical address of EMM import struct
  8349.              04h    BYTE    major version (v6.00 sets to 01h)
  8350.              05h    BYTE    minor version (v6.00 sets to 00h/0Bh)
  8351.             SeeAlso: INT 21/AX=4402h/SF=01h
  8352.             01h ???
  8353.             Return: CF set on error
  8354.                 CF clear if successful
  8355.             02h ???
  8356.             Return: CF set on error
  8357.                 CF clear if successful
  8358.             03h MS Windows initializing
  8359.             CX = segment from which Windows init broadcast made???
  8360.             DL = Windows startup flags???
  8361.             DI = Windows version number (major in upper byte)
  8362.             Return: ???
  8363.             SeeAlso: INT 2F/AX=1605h
  8364.             04h MS Windows terminating
  8365.             Return: CF clear
  8366.             05h determine whether program is driver???
  8367.             DS:DX -> ASCIZ filename
  8368.             Return: CF clear
  8369.                 AL = 01h if string ends in ".DRV"
  8370.                    = FFh if string ends in "GDI.EXE"
  8371.                    = 00h otherwise
  8372.             06h ???
  8373.             CX = length of data pointed at by DS:DX
  8374.             DS:DX -> ???
  8375.             Return: CF clear
  8376.             07h BUG: QEMM 6.00-7.01 accept this and branch randomly
  8377.             else Return: CF set
  8378.     AH = 1Ch protected-mode hardware interrupt handlers ???
  8379.         AL = subfunction
  8380.             00h restore??? IRQ0-7 handlers
  8381.             01h set??? IRQ0-7 handlers
  8382.             ES:DI -> 8 DWORDs containing ???
  8383.             02h restore??? IRQ8-15 handlers
  8384.             03h set??? IRQ8-15 handlers
  8385.             ES:DI -> 8 DWORDs containing ???
  8386.         BUG: although the jump table only contains four entries,
  8387.             QEMM 6.00 will attempt to use it for any value of
  8388.             AL between 00h and 2Ah, thus branching unpredictably
  8389.             for AL=04h-2Ah; QEMM v7.01 behaves similarly for
  8390.             AL=04h-1Bh
  8391.      ---QEMM v6.00+ ---
  8392.     AH = 1Dh Stealth interrupts
  8393.         AL = subfunction
  8394.             00h switch to pre-Stealth interrupt vector table
  8395.             Note:    also switches VGA Save table pointer
  8396.                   (0040h:00A8h) and overwrites the vectors
  8397.                   currently assigned for use by the two
  8398.                   interrupt controllers (see INT 67/AX=DE0Ah)
  8399.                   with the vectors for INT 08-0F and 70-77 (to
  8400.                   avoid crashing the system).
  8401.             01h restore user interrupt vector table
  8402.             Notes:    interrupts should be disabled around the
  8403.                   AX=1D00h and AX=1D01h calls because QEMM does
  8404.                   not modify the memory maps to map in ROM, so
  8405.                   an interrupt could be disastrous
  8406.                 clears any pending IRQ7 at end of function
  8407.             else
  8408.             Return: CF set
  8409.         Note:    functions 1Dxxh are not supported by QEMM v7.01, and
  8410.               always return CF set
  8411.     AH = 1Eh Stealth information (documented)
  8412.         AL = subfunction
  8413.             00h "QEMM_GET_INFO" get Stealth configuration
  8414.             Return: BL = flags (documented as "reserved")
  8415.                     bit 0: conventional memory sorted
  8416.                     bit 1: conventional memory filled
  8417.                     bit 2: ???
  8418.                     bit 3: ???
  8419.                     bit 4: expanded memory is in use
  8420.                     bit 5: ???
  8421.                 BH = reserved (always 00h for v6.00)
  8422.                 CL = stealth type (00h none,46h Frame,4Dh Map)
  8423.                 CH = suspend/resume interrupt (00h none)
  8424.                 DX = reserved (always 0000h for v6.00)
  8425.                 SI = reserved (always 0000h for v6.00)
  8426.                 DI = reserved (always 0000h for v6.00)
  8427.             01h "QEMM_GET_STEALTH_COUNT" get number of Stealth'ed ROMs
  8428.             Return: CF clear
  8429.                 BX = number of Stealth'ed ROMs
  8430.             02h "QEMM_GET_STEALTH_LIST" get Stealth'ed ROM info
  8431.             ES:DI -> buffer for Stealth ROM info (see below)
  8432.             Return: CF clear
  8433.                 BX = number of Stealth'ed ROMs
  8434.                 ES:DI buffer filled
  8435.             else
  8436.             Return: CF set
  8437.     AH = 1Fh page table manipulation (documented)
  8438.         AL = subfunction
  8439.             00h "QEMM_GET_PTE" get page table entry
  8440.             CX = page number
  8441.             Return: EDX = page table entry
  8442.                 CF clear
  8443.             01h "QEMM_SET_PTE" set page table entry
  8444.             CX = page number
  8445.             EDX = new page table entry
  8446.             Return: CF clear
  8447.             SeeAlso: function 1008h
  8448.             else
  8449.             Return: CF set
  8450.     AH = 20h asynchronous disk access support (documented)
  8451.         AL = subfunction
  8452.             00h "QEMM_GET_VHI_INFO" get VirtualHDIRQ information
  8453.             Return: CF clear
  8454.                 BL = flags
  8455.                     bit 7: VirtualHDIRQ setting respected
  8456.                      (set if Stealth active)
  8457.                     bits 6-1 reserved
  8458.                     bit 0: VirtualHDIRQ currently enabled
  8459.                     (INT 15/AH=90h suppressed when enabled)
  8460.             01h "QEMM_SET_VHI_FINO" set VirtualHDIRQ state
  8461.             BL bit 0 = new VirtualHDIRQ state
  8462.             Return: CF clear
  8463.                 BL = old VHI setting (bits 0 and 7, see above)
  8464.             else
  8465.             Return: CF set
  8466.     AH = 21h Stealth support (documented)
  8467.         AL = subfunction
  8468.             00h "QEMM_COPY_STEALTH_ROMS" copy data from Stealthed addr
  8469.             DS:SI -> start address of hidden memory to copy
  8470.             ES:DI -> buffer for copied data
  8471.             ECX = number of bytes to copy
  8472.             Return: CF clear if successful
  8473.                 CF set on error (DS:SI < C000h:0000h or
  8474.                          DS:SI + ECX > 1M)
  8475.             else
  8476.             Return: CF set
  8477.     ---QEMM v6.03+ ---
  8478.     AH = 22h DESQview/X support
  8479.         AL = subfunction
  8480.             00h get ???
  8481.             Return: CF clear
  8482.                 ES:DI -> ???
  8483.             01h set ???
  8484.             ES:DI -> ??? or 0000h:0000h
  8485.             Return: CF clear if successful
  8486.                 CF set on error
  8487.     ---QEMM v6.04+ ---
  8488.     AH = 23h ???
  8489.         AL = subfunction
  8490.             00h get ???
  8491.             BX = which ??? to get (must be 0000h for v6.04)
  8492.             Return: CF clear if successful
  8493.                     ES:DI -> ???
  8494.                 CF set on error
  8495.             01h set ???
  8496.             BX = which ??? to set (must be 0000h for v6.04)
  8497.             ES:DI -> ???
  8498.             Return: CF clear if successful
  8499.                 CF set on error
  8500.             02h clear specified ???
  8501.             BX = which ??? to clear (must be 0000h for v6.04)
  8502.             Return: CF clear if successful
  8503.                 CF set on error
  8504.             FFh clear all ???
  8505.             else
  8506.             Return: CF set
  8507.     ---QEMM v7.01 only---
  8508.     AH = 24h ST-DBL support
  8509.         AL = subfunction
  8510.             00h set ???
  8511.             EDX -> information table
  8512.                 (EDX = segment SHL 16 + offset)
  8513.             01h ???
  8514.     other
  8515.         Return: CF set
  8516.  
  8517. Format of QEMM 6.0 memory statistics:
  8518. Offset    Size    Description
  8519.  00h    BYTE    01h if Shadow RAM found, 00h otherwise
  8520.  01h    DWORD    initial conventional memory in bytes
  8521.  05h    DWORD    initial extended memory in bytes
  8522.  09h    DWORD    initial expanded memory in bytes
  8523.  0Dh    DWORD    initial "top" or "shadow" memory in bytes
  8524.  11h    DWORD    Unavailable conventional memory in bytes
  8525.  15h    DWORD    Unavailable extended memory in bytes
  8526.  19h    DWORD    Unavailable expanded memory in bytes
  8527.  1Dh    DWORD    Unavailable "top" or "shadow" memory in bytes
  8528.         Add to offset 49h for Total unavailable top/shadow.
  8529.  21h    DWORD    QEMM code size in bytes
  8530.  25h    DWORD    QEMM data size in bytes
  8531.  29h    DWORD    bytes used for TASKS=
  8532.  2Dh    DWORD    DMA buffer size
  8533.  31h    DWORD    bytes used for MAPS=
  8534.  35h    DWORD    bytes of high RAM
  8535.  39h    DWORD    bytes used by mapped ROMs
  8536.  3Dh    DWORD    bytes of conventional memory provided by QEMM
  8537.  41h    DWORD    bytes of extended memory NOT converted by QEMM (EXT=xxx)
  8538.  45h    DWORD    bytes of EMS/XMS pool memory provided by QEMM
  8539.  49h    DWORD    Unavailable "top" or "shadow" memory in bytes
  8540.         Add to offset 1Dh for Total unavailable top/shadow.
  8541.  4Dh    DWORD    conventional memory overhead in bytes
  8542.         (set to 0 by QEMM.COM prior to call)
  8543.  
  8544. Format of Stealth ROM info [array]:
  8545. Offset    Size    Description
  8546.  00h    WORD    starting segment of ROM
  8547.  02h    WORD    length of ROM in paragraphs
  8548. --------m-6740-------------------------------
  8549. INT 67 - LIM EMS - GET MANAGER STATUS
  8550.     AH = 40h
  8551. Return: AH = status (00h,80h,81h,84h) (see below)
  8552. Note:    this call can be used only after establishing that the EMS driver is in
  8553.       fact present
  8554. SeeAlso: AH=3Fh,AX=FFA5h
  8555.  
  8556. Values for EMS function status:
  8557.  00h    successful
  8558.  80h    internal error
  8559.  81h    hardware malfunction
  8560.  83h    invalid handle
  8561.  84h    undefined function requested by application
  8562.  85h    no more handles available
  8563.  86h    error in save or restore of mapping context
  8564.  87h    insufficient memory pages in system
  8565.  88h    insufficient memory pages available
  8566.  89h    zero pages requested
  8567.  8Ah    invalid logical page number encountered
  8568.  8Bh    invalid physical page number encountered
  8569.  8Ch    page-mapping hardware state save area is full
  8570.  8Dh    save of mapping context failed
  8571.  8Eh    restore of mapping context failed
  8572.  8Fh    undefined subfunction
  8573.  90h    undefined attribute type
  8574.  91h    feature not supported
  8575.  92h    successful, but a portion of the source region has been overwritten
  8576.  93h    length of source or destination region exceeds length of region
  8577.       allocated to either source or destination handle
  8578.  94h    conventional and expanded memory regions overlap
  8579.  95h    offset within logical page exceeds size of logical page
  8580.  96h    region length exceeds 1M
  8581.  97h    source and destination EMS regions have same handle and overlap
  8582.  98h    memory source or destination type undefined
  8583.  9Ah    specified alternate map register or DMA register set not supported
  8584.  9Bh    all alternate map register or DMA register sets currently allocated
  8585.  9Ch    alternate map register or DMA register sets not supported
  8586.  9Dh    undefined or unallocated alternate map register or DMA register set
  8587.  9Eh    dedicated DMA channels not supported
  8588.  9Fh    specified dedicated DMA channel not supported
  8589.  A0h    no such handle name
  8590.  A1h    a handle found had no name, or duplicate handle name
  8591.  A2h    attempted to wrap around 1M conventional address space
  8592.  A3h    source array corrupted
  8593.  A4h    operating system denied access
  8594. --------m-6741-------------------------------
  8595. INT 67 - LIM EMS - GET PAGE FRAME SEGMENT
  8596.     AH = 41h
  8597. Return: AH = status (see also AH=40h)
  8598.         00h function successful
  8599.         BX = segment of page frame
  8600. SeeAlso: AH=58h,AH=68h
  8601. --------m-6742-------------------------------
  8602. INT 67 - LIM EMS - GET NUMBER OF PAGES
  8603.     AH = 42h
  8604. Return: AH = status (see also AH=40h)
  8605.         00h function successful
  8606.         BX = number of unallocated pages
  8607.         DX = total number of pages
  8608. BUG:    DOS 6.0 EMM386.EXE causes a system lock-up or reboot if in AUTO mode
  8609.       when this call is made; use AH=46h to ensure that EMM386 is ON
  8610.       before making this call
  8611. SeeAlso: INT 2F/AX=2702h
  8612. --------m-6743-------------------------------
  8613. INT 67 - LIM EMS - GET HANDLE AND ALLOCATE MEMORY
  8614.     AH = 43h
  8615.     BX = number of logical pages to allocate
  8616. Return: AH = status (00h,80h,81h,84h,85h,87h,88h,89h) (see AH=40h)
  8617.     DX = handle if AH=00h
  8618. SeeAlso: AH=45h
  8619. --------m-6744-------------------------------
  8620. INT 67 - LIM EMS - MAP MEMORY
  8621.     AH = 44h
  8622.     AL = physical page number (0-3)
  8623.     BX = logical page number
  8624.     DX = handle
  8625. Return: AH = status (00h,80h,81h,83h,84h,8Ah,8Bh) (see AH=40h)
  8626. SeeAlso: AH=69h
  8627. --------m-6745-------------------------------
  8628. INT 67 - LIM EMS - RELEASE HANDLE AND MEMORY
  8629.     AH = 45h
  8630.     DX = EMM handle
  8631. Return: AH = status (00h,80h,81h,83h,84h,86h) (see AH=40h)
  8632. SeeAlso: AH=43h
  8633. --------m-6746-------------------------------
  8634. INT 67 - LIM EMS - GET EMM VERSION
  8635.     AH = 46h
  8636. Return: AH = status (00h,80h,81h,84h) (see AH=40h)
  8637.     AL = EMM version number if AH=00h
  8638. --------m-6747-------------------------------
  8639. INT 67 - LIM EMS - SAVE MAPPING CONTEXT
  8640.     AH = 47h
  8641.     DX = handle
  8642. Return: AH = status (see below)
  8643. SeeAlso: AH=48h
  8644.  
  8645. Values for status:
  8646.  00h    successful
  8647.  80h    internal error
  8648.  81h    hardware malfunction
  8649.  83h    invalid handle
  8650.  84h    undefined function requested
  8651.  8Ch    page-mapping hardware state save area is full
  8652.  8Dh    save of mapping context failed
  8653.  8Eh    restore of mapping context failed
  8654. --------m-6748-------------------------------
  8655. INT 67 - LIM EMS - RESTORE MAPPING CONTEXT
  8656.     AH = 48h
  8657.     DX = handle
  8658. Return: AH = status (00h,80h,81h,83h,84h,8Eh) (see AH=47h)
  8659. SeeAlso: AH=47h
  8660. --------m-6749-------------------------------
  8661. INT 67 - LIM EMS - reserved - GET I/O PORT ADDRESSES
  8662.     AH = 49h
  8663. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  8664. --------m-674A-------------------------------
  8665. INT 67 - LIM EMS - reserved - GET TRANSLATION ARRAY
  8666.     AH = 4Ah
  8667. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  8668. --------m-674B-------------------------------
  8669. INT 67 - LIM EMS - GET NUMBER OF EMM HANDLES
  8670.     AH = 4Bh
  8671. Return: AH = status (see below)
  8672.     BX = number of EMM handles if AH=00h
  8673.  
  8674. Values for status:
  8675.  00h    successful
  8676.  80h    internal error
  8677.  81h    hardware malfunction
  8678.  83h    invalid handle
  8679.  84h    undefined function requested
  8680. --------m-674C-------------------------------
  8681. INT 67 - LIM EMS - GET PAGES OWNED BY HANDLE
  8682.     AH = 4Ch
  8683.     DX = EMM handle
  8684. Return: AH = status (see AH=4Bh)
  8685.     BX = number of logical pages if AH=00h
  8686. SeeAlso: AH=4Dh
  8687. --------m-674D-------------------------------
  8688. INT 67 - LIM EMS - GET PAGES FOR ALL HANDLES
  8689.     AH = 4Dh
  8690.     ES:DI -> array to receive information
  8691. Return: AH = status (00h,80h,81h,84h) (see AH=4Bh)
  8692.     ---if AH=00h---
  8693.     BX = number of active EMM handles
  8694.     array filled with 2-word entries, consisting of a handle and the
  8695.       number of pages allocated to that handle
  8696. SeeAlso: AH=4Ch
  8697. --------m-674E-------------------------------
  8698. INT 67 - LIM EMS - GET OR SET PAGE MAP
  8699.     AH = 4Eh
  8700.     AL = 00h if getting mapping registers
  8701.          01h if setting mapping registers
  8702.          02h if getting and setting mapping registers at once
  8703.          03h if getting size of page-mapping array
  8704.     DS:SI -> array holding information (AL=01h/02h)
  8705.     ES:DI -> array to receive information (AL=00h/02h)
  8706. Return: AH = status
  8707.         00h successful
  8708.         AL = bytes in page-mapping array (AL=03h only)
  8709.         array pointed to by ES:DI receives mapping info (AL=00h/02h)
  8710.         80h internal error
  8711.         81h hardware malfunction
  8712.         84h undefined function requested
  8713.         8Fh undefined subfunction parameter
  8714.         A3h contents of source array corrupted (EMS 4.0?)
  8715. Notes:    this function was designed to be used by multitasking operating systems
  8716.       and should not ordinarily be used by appplication software.
  8717.     MD386 returns the size of the page-mapping array in AX instead of AL
  8718. SeeAlso: AH=4Fh
  8719. --------m-674F-------------------------------
  8720. INT 67 - LIM EMS 4.0 - GET/SET PARTIAL PAGE MAP
  8721.     AH = 4Fh
  8722.     AL = subfunction
  8723.         00h get partial page map
  8724.            DS:SI -> structure containing list of segments whose mapping
  8725.             contexts are to be saved
  8726.            ES:DI -> array to receive page map
  8727.         01h set partial page map
  8728.            DS:SI -> structure containing saved partial page map
  8729.         02h get size of partial page map
  8730.            BX = number of mappable segments in the partial map to be saved
  8731. Return: AH = status
  8732.         00h successful
  8733.         80h internal error
  8734.         81h hardware malfunction
  8735.         84h undefined function requested
  8736.         8Bh one of specified segments is not mappable
  8737.         8Fh undefined subfunction parameter
  8738.         A3h contents of partial page map corrupted or count of mappable
  8739.         segments exceeds total number of mappable segments in system
  8740.     AL = size of partial page map for subfunction 02h
  8741. SeeAlso: AH=4Eh
  8742. --------m-6750-------------------------------
  8743. INT 67 - LIM EMS 4.0 - MAP/UNMAP MULTIPLE HANDLE PAGES
  8744.     AH = 50h
  8745.     AL = subfunction
  8746.         00h use physical page numbers
  8747.         01h use segment addresses
  8748.     DX = handle
  8749.     CX = number of entries in array
  8750.     DS:SI -> mapping array (see below)
  8751. Return: AH = status
  8752.         00h successful
  8753.         80h internal error
  8754.         81h hardware malfunction
  8755.         83h invalid handle
  8756.         84h undefined function requested
  8757.         8Ah one or more logical pages are invalid
  8758.         8Bh one or more physical pages are invalid
  8759.         8Fh invalid subfunction
  8760. SeeAlso: AH=40h
  8761.  
  8762. Format of mapping array entry:
  8763. Offset    Size    Description
  8764.  00h    WORD    logical page number or FFFFh to unmap physical page
  8765.  02h    WORD    physical page number or segment address
  8766. --------m-6751-------------------------------
  8767. INT 67 - LIM EMS 4.0 - REALLOCATE PAGES
  8768.     AH = 51h
  8769.     DX = handle
  8770.     BX = number of pages to be allocated to handle
  8771. Return:    AH = status (00h,80h,81h,83h,84h,87h,88h) (see below)
  8772.     BX = actual number of pages allocated to handle
  8773.  
  8774. Values for status:
  8775.  00h    successful
  8776.  80h    internal error
  8777.  81h    hardware malfunction
  8778.  83h    invalid handle
  8779.  84h    undefined function requested
  8780.  87h    more pages requested than present in system
  8781.  88h    more pages requested than currently available
  8782.  8Fh    undefined subfunction
  8783.  90h    undefined attribute type
  8784.  91h    feature not supported
  8785.  A0h    no such handle name
  8786.  A1h    duplicate handle name
  8787. --------m-6752-------------------------------
  8788. INT 67 - LIM EMS 4.0 - GET/SET HANDLE ATTRIBUTES
  8789.     AH = 52h
  8790.     AL = subfunction
  8791.         00h get handle attributes
  8792.         Return: AL = attribute
  8793.                 00h handle is volatile
  8794.                 01h handle is nonvolatile
  8795.         01h set handle attributes
  8796.         BL = new attribute (see returned AL)
  8797.         02h get attribute capability
  8798.         Return: AL = attribute capability
  8799.                 00h only volatile handles supported
  8800.                 01h both volatile and non-volatile supported
  8801.     DX = handle
  8802. Return: AH = status (00h,80h,81h,83h,84h,8Fh-91h) (see AH=51h)
  8803. SeeAlso: AH=53h
  8804. --------m-6753-------------------------------
  8805. INT 67 - LIM EMS 4.0 - GET/SET HANDLE NAME
  8806.     AH = 53h
  8807.     AL = subfunction
  8808.         00h get handle name
  8809.            ES:DI -> 8-byte buffer for handle name
  8810.         01h set handle name
  8811.            DS:SI -> 8-byte handle name
  8812.     DX = handle
  8813. Return: AH = status (00h,80h,81h,83h,84h,8Fh,A1h) (see AH=51h)
  8814. SeeAlso: AH=52h
  8815. --------m-6754-------------------------------
  8816. INT 67 - LIM EMS 4.0 - GET HANDLE DIRECTORY
  8817.     AH = 54h
  8818.     AL = subfunction
  8819.         00h get handle directory
  8820.            ES:DI -> buffer for handle directory (see below)
  8821.         01h search for named handle
  8822.            DS:SI -> 8-byte name
  8823.         02h get total number of handles
  8824. Return: AL = number of entries in handle directory (subfunction 00h)
  8825.     DX = value of named handle (subfunction 01h)
  8826.     BX = total number of handles (subfunction 02h)
  8827.     AH = status (00h,80h,81h,84h,8Fh,A0h,A1h) (see also AH=51h)
  8828.         A1h a handle found had no name
  8829.  
  8830. Format of handle directory entry:
  8831. Offset    Size    Description
  8832.  00h    WORD    handle
  8833.  02h  8 BYTEs    handle's name
  8834. --------m-6755-------------------------------
  8835. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND JUMP
  8836.     AH = 55h
  8837.     AL = subfunction
  8838.         00h physical page numbers provided by caller
  8839.         01h segment addresses provided by caller
  8840.     DX = handle
  8841.     DS:SI -> structure containing map and jump address
  8842. Return: (at target address unless error)
  8843.     AH = status (see below)
  8844. SeeAlso: AH=56h
  8845.  
  8846. Values for status:
  8847.  00h    successful
  8848.  80h    internal error
  8849.  81h    hardware failure
  8850.  83h    invalid handle
  8851.  84h    undefined function requested
  8852.  8Ah    invalid logical page number encountered
  8853.  8Bh    invalid physical page number encountered
  8854.  8Fh    invalid subfunction
  8855. --------m-6756-------------------------------
  8856. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND CALL
  8857.     AH = 56h
  8858.     AL = subfunction
  8859.         00h physical page numbers provided by caller
  8860.         DX = handle
  8861.         DS:SI -> structure containing page map and call address
  8862.         01h segment addresses provided by caller
  8863.         DX = handle
  8864.         DS:SI -> structure containing page map and call address
  8865.         02h get page map stack space required
  8866.         Return: BX = stack space required
  8867. Return: (if successful, the target address is called.  Use a RETF to return and
  8868.      restore mapping context)
  8869.     AH = status (see AH=55h)
  8870. SeeAlso: AH=55h
  8871. --------m-6756FF-----------------------------
  8872. INT 67 - RM386 v6.00 - ???
  8873.     AX = 56FFh
  8874.     DS:SI -> ???
  8875.     ???
  8876. Return: ???
  8877. --------m-6757-------------------------------
  8878. INT 67 - LIM EMS 4.0 - MOVE/EXCHANGE MEMORY REGION
  8879.     AH = 57h
  8880.     AL = subfunction
  8881.         00h move memory region
  8882.         01h exchange memory region
  8883.     DS:SI -> structure describing source and destination (see below)
  8884. Return: AH = status (see below)
  8885. Note:    source and destination may overlap for a move, in which case the copy
  8886.       direction is chosen such that the destination receives an intact copy
  8887.       of the source region
  8888.  
  8889. Values for status:
  8890.  00h    successful
  8891.  80h    internal error
  8892.  81h    hardware failure
  8893.  83h    invalid handle
  8894.  84h    undefined function requested
  8895.  8Ah    invalid logical page number encountered
  8896.  8Fh    undefined subfunction
  8897.  92h    successful, but a portion of the source region has been overwritten
  8898.  93h    length of source or destination region exceeds length of region
  8899.       allocated to either source or destination handle
  8900.  94h    conventional and expanded memory regions overlap
  8901.  95h    offset within logical page exceeds size of logical page
  8902.  96h    region length exceeds 1M
  8903.  97h    source and destination EMS regions have same handle and overlap
  8904.  98h    memory source or destination type undefined
  8905.  A2h    attempted to wrap around 1M conventional address space
  8906.  
  8907. Format of EMS copy data:
  8908. Offset    Size    Description
  8909.  00h    DWORD    region length in bytes
  8910.  04h    BYTE    source memory type
  8911.         00h conventional
  8912.         01h expanded
  8913.  05h    WORD    source handle (0000h if conventional memory)
  8914.  07h    WORD    source initial offset (within page if EMS, segment if convent)
  8915.  09h    WORD    source initial segment (conv mem) or logical page (EMS)
  8916.  0Bh    BYTE    destination memory type
  8917.         00h conventional
  8918.         01h expanded
  8919.  0Ch    WORD    destination handle
  8920.  0Eh    WORD    destination initial offset
  8921.  10h    WORD    destination initial segment or page
  8922. --------m-6758-------------------------------
  8923. INT 67 - LIM EMS 4.0 - GET MAPPABLE PHYSICAL ADDRESS ARRAY
  8924.     AH = 58h
  8925.     AL = subfunction
  8926.         00h get mappable physical address array
  8927.         ES:DI -> buffer to be filled with array
  8928.         01h get number of entries in m.p.a. array
  8929. Return: CX = number of entries in array
  8930.     AH = status (00h,80h,81h,84h,8Fh) (see AH=57h)
  8931. Note:    the returned array for subfunction 00h is filled in physical segment
  8932.       address order
  8933.  
  8934. Format of mappable physical address entry:
  8935. Offset    Size    Description
  8936.  00h    WORD    physical page segment
  8937.  02h    WORD    physical page number
  8938. --------m-675857-----------------------------
  8939. INT 67 U - NETROOM??? - ???
  8940.     AX = 5857h
  8941.     BX = function??? (0057h,0059h,0159h seen)
  8942.     ???
  8943. Return: ???
  8944. Note:    BX=0059h appears to be analogous to AX=5800h and BX=0159h appears to
  8945.       be analogous to AX=5801h; BX=0057h appears to indicate whether
  8946.       AX=580xh or AX=5857h/BX=0x59h should be used
  8947. SeeAlso: AX=5BF0h
  8948. --------m-6759-------------------------------
  8949. INT 67 - LIM EMS 4.0 - GET EXPANDED MEMORY HARDWARE INFORMATION
  8950.     AH = 59h
  8951.     AL = subfunction
  8952.         00h get hardware configuration array
  8953.         ES:DI -> buffer to be filled with array (see below)
  8954.         01h get unallocated raw page count
  8955.         Return: BX = unallocated raw pages
  8956.             DX = total raw pages
  8957. Return: AH = status (see also AH=58h"EMS 4.0")
  8958.         A4h access denied by operating system
  8959. Note:    subfunction 00h is for use by operating systems only, and can be
  8960.       enabled or disabled at any time by the operating system
  8961.  
  8962. Format of hardware configuration array:
  8963. Offset    Size    Description
  8964.  00h    WORD    size of raw EMM pages in paragraphs
  8965.  02h    WORD    number of alternate register sets
  8966.  04h    WORD    size of mapping-context save area in bytes
  8967.  06h    WORD    number of register sets assignable to DMA
  8968.  08h    WORD    DMA operation type
  8969.         0000h DMA with alternate register sets
  8970.         0001h only one DMA register set
  8971. --------m-675A-------------------------------
  8972. INT 67 - LIM EMS 4.0 - ALLOCATE STANDARD/RAW PAGES
  8973.     AH = 5Ah
  8974.     AL = subfunction
  8975.         00h allocate standard pages
  8976.         01h allocate raw pages
  8977.     BX = number of pages to allocate
  8978. Return: DX = handle
  8979.     AH = status
  8980.         00h successful
  8981.         80h internal error
  8982.         81h hardware failure
  8983.         84h undefined function requested
  8984.         85h no more handles available
  8985.         87h insufficient memory pages in system
  8986.         88h insufficient memory pages available
  8987.         8Fh undefined subfunction
  8988. --------m-675B-------------------------------
  8989. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET
  8990.     AH = 5Bh
  8991.     AL = subfunction
  8992.         00h get alternate map register set
  8993.         Return: BL = current active alternate map register set number
  8994.             ES:DI -> map register context save area if BL=00h
  8995.         01h set alternate map register set
  8996.         BL = new alternate map register set number
  8997.         ES:DI -> map register context save area if BL=0
  8998.         02h get alternate map save array size
  8999.         Return: DX = array size in bytes
  9000.         03h allocate alternate map register set
  9001.         Return: BL = number of map register set; 00h = not supported
  9002.         04h deallocate alternate map register set
  9003.         BL = number of alternate map register set
  9004. Return: AH = status (00h,80h,81h,84h,8Fh,9Ah-9Dh,A3h,A4h) (see below)
  9005. Note:    this function is for use by operating systems only, and can be
  9006.       enabled or disabled at any time by the operating system
  9007.  
  9008. Values for status:
  9009.  00h    successful
  9010.  80h    internal error
  9011.  81h    hardware malfunction
  9012.  84h    undefined function requested
  9013.  8Fh    undefined subfunction
  9014.  9Ah    specified alternate map register or DMA register set not supported
  9015.  9Bh    all alternate map register or DMA register sets currently allocated
  9016.  9Ch    alternate map register or DMA register sets not supported
  9017.  9Dh    undefined or unallocated alternate map register/DMA register set
  9018.  9Eh    dedicated DMA channels not supported
  9019.  9Fh    specified dedicated DMA channel not supported
  9020.  A3h    source array corrupted
  9021.  A4h    operating system denied access
  9022. --------m-675B-------------------------------
  9023. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET - DMA REGISTERS
  9024.     AH = 5Bh
  9025.     AL = subfunction
  9026.         05h allocate DMA register set
  9027.         Return: BL = DMA register set number, 00h if not supported
  9028.         06h enable DMA on alternate map register set
  9029.            BL = DMA register set number
  9030.            DL = DMA channel number
  9031.         07h disable DMA on alternate map register set
  9032.            BL = DMA register set number
  9033.         08h deallocate DMA register set
  9034.            BL = DMA register set number
  9035. Return: AH = status (00h,80h,81h,84h,8Fh,9Ah-9Fh,A3h,A4h) (see AH=5Ah)
  9036. Note:    this function is for use by operating systems only, and can be
  9037.       enabled or disabled at any time by the operating system
  9038. --------m-675BE0-----------------------------
  9039. INT 67 - MICEMM v4D, RM386 - GET LINEAR ADDRESS OF MEMORY
  9040.     AX = 5BE0h
  9041.     ES:BX -> memory for which to get linear address
  9042. Return: AH = 00h
  9043.     CX:DX = linear address of physical memory corresponding to ES:BX
  9044. Program: RAM-MAN/386 is the memory manager included with Helix's Netroom;
  9045.       MICEMM is a memory manager for some Micronics motherboards
  9046. Note:    this has been superceded by AX=DE06h, which should be used instead
  9047. SeeAlso: AX=5BF0h,AX=5BF1h,AX=DE06h
  9048. --------m-675BE1-----------------------------
  9049. INT 67 - RM386 v6.00+ - GET MEMORY MANAGER SIZE
  9050.     AX = 5BE1h
  9051. Return: AH = 00h
  9052.     CX = code and data size in bytes
  9053.     DX:BX = physical address of RM386 code
  9054.     DI:SI = total size of RM386 area including handle tables
  9055.     BP = number of additional pages (high DOS, etc.)
  9056. SeeAlso: AX=5BE0h,AX=5BE2h
  9057. --------m-675BE2-----------------------------
  9058. INT 67 - RM386 v6.00+ - GET INTERRUPT VECTORS
  9059.     AX = 5BE2h
  9060. Return: DS:SI -> V86-mode table (see below)
  9061.     ES:BX -> ??? (undoc, middle of device driver interrupt routine!)
  9062. SeeAlso: AX=5BE0h,AX=5BE1h
  9063.  
  9064. Format of V86-mode table:
  9065. Offset    Size    Description
  9066.  00h    DWORD    original INT 13 vector
  9067.  04h    DWORD    original INT 15 vector
  9068.  08h    DWORD    original INT 19 vector
  9069.  0Ch    DWORD    original INT 21 vector
  9070.  10h    DWORD    original INT 4B vector
  9071.  14h    DWORD    original INT 67 vector
  9072. --------m-675BF0-----------------------------
  9073. INT 67 - MICEMM v4D, RM386 - INSTALLATION CHECK
  9074.     AX = 5BF0h
  9075. Return: AH = 00h if MICEMM or RM386 present
  9076.         BX = code segment of driver
  9077. Program: MICEMM is the Micronics Expanded Memory Manager; RM386 is the memory
  9078.       manager included in Helix Software's Netroom
  9079. SeeAlso: AH=3Fh,AX=5BE0h,AX=5BF1h
  9080. --------m-675BF1-----------------------------
  9081. INT 67 - MICEMM v4D, RM386 - GET ADDRESS MAP
  9082.     AX = 5BF1h
  9083.     ES:BX -> 256-byte (MICEMM) or 512-byte (RM386) buffer for memory types
  9084. Return: AH = 00h
  9085.     ES:BX buffer filled
  9086. Note:    each byte in the buffer specifies the type of a 4K page of memory
  9087. SeeAlso: AX=5BE0h,AX=5BF0h
  9088.  
  9089. Values for memory type:
  9090.  00h    unused (MICEMM), RAM/available (RM386)
  9091.  02h    DOS extension (XMS UMB)
  9092.  04h    shadowed ROM
  9093.  08h    mappable EMS
  9094.  10h    page frame
  9095.  20h    ROM
  9096.  40h    reserved (video memory, etc)
  9097.  80h    RAM (MICEMM), Windows UMB (RM386)
  9098. --------m-675BF2-----------------------------
  9099. INT 67 - RM386 - GET RM386 INTERNAL DATA
  9100.     AX = 5BF2h
  9101.     CX = size of buffer
  9102.     DS:SI -> buffer for internal data
  9103.     (documentation says ES:BX -> buffer, SI = offset within RM386)
  9104. Return: buffer filled
  9105. Note:    the data returned by this function is release-specific
  9106. SeeAlso: AX=5BF0h
  9107. --------m-675BF3-----------------------------
  9108. INT 67 - RM386 - RETURN TO REAL MODE
  9109.     AX = 5BF3h
  9110. Return: nothing
  9111. Note:    use AX=5DE0h instead of this functin
  9112. SeeAlso: AX=5BF0h,AX=5DE0h
  9113. --------m-675BF4-----------------------------
  9114. INT 67 - RM386 v6.00 - GET RM386 GLOBAL FLAGS
  9115.     AX = 5BF4h
  9116. Return: AH = 00h
  9117.     BX = global flags 1 (see below)
  9118.     CX = global flags 2 (see below)
  9119.     DX = global flags 3 (see below)
  9120.     SI = global flags 4 (see below)
  9121. SeeAlso: AX=5BF0h
  9122.  
  9123. Bitfields for global flags 1:
  9124.  bits 0-3 reserved
  9125.  bit 4    V86 mode
  9126.  bit 5    reserved
  9127.  bit 6    80386 or higher CPU
  9128.  bits 7,8 reserved
  9129.  bit 9    A20 enabled at startup
  9130.  bit 10 "HIGH_IO"
  9131.  bit 11 ROM
  9132.  bit 12 large frame
  9133.  bits 13,14 reserved
  9134.  bit 15 PS/2-style A20 control
  9135.  
  9136. Bitfields for global flags 2:
  9137.  bit 0    HMA in use
  9138.  bit 1    XMS present
  9139.  bit 2    using XMS driver memory
  9140.  bit 3    HIGH (NEAT only)
  9141.  bits 4-7 reserved
  9142.  bit 8    NOBKTRAP
  9143.  bit 9    NORESET
  9144.  bit 10 ALTMAP
  9145.  bit 11 NOFRAME
  9146.  bits 12-15 reserved
  9147.  
  9148. Bitfields for global flags 3:
  9149.  bit 0    NOTEST
  9150.  bit 1    NOEBDA
  9151.  bit 2    Windows3 support
  9152.  bit 3    system board mouse
  9153.  bit 4    DISKBUF
  9154.  bit 5    EBDALOW
  9155.  bit 6    A20 global enable flag
  9156.  bit 7    A20 flag
  9157.  bit 8    EBDA moved to stub
  9158.  bit 9    VXD file was found
  9159.  bit 10 reserved
  9160.  bit 11 NOBOOTMAP
  9161.  bit 12 AUTO
  9162.  bit 13 PS/2 machine
  9163.  bit 14 Compaq ROM merge active
  9164.  bit 15 NOHMA set
  9165.  
  9166. Bitfields for global flags 4:
  9167.  bit 0    "NOV8259" don't virtualize interrupt controller
  9168.  bit 1    NOSCSI
  9169.  bit 2    NOSCAN
  9170.  bit 3    NOTR
  9171.  bit 4    ALTBOOT
  9172.  bit 5    NOCOMPQ
  9173.  bit 6    KB2TRAP
  9174.  bit 7    DESHADOW
  9175.  bit 8    Video 7 VGA detected
  9176.  bit 9    reserved
  9177.  bit 10 NOVGA
  9178.  bit 11 NOPS2
  9179.  bit 12 DEBUG
  9180.  bit 13 NOVKB
  9181.  bits 14,15 reserved
  9182. --------m-675BF5-----------------------------
  9183. INT 67 - RM386 v6.00 - GET RM386 EMS HANDLE COUNT
  9184.     AX = 5BF5h
  9185. Return: AH = status
  9186.         00h successful
  9187.         BX = current number of allocated EMS handles
  9188.         84h function not available
  9189. SeeAlso: AX=5BF0h
  9190. --------m-675C-------------------------------
  9191. INT 67 - LIM EMS 4.0 - PREPARE EXPANDED MEMORY HARDWARE FOR WARM BOOT
  9192.     AH = 5Ch
  9193. Return: AH = status (see below)
  9194.  
  9195. Values for status:
  9196.  00h    successful
  9197.  80h    internal error
  9198.  81h    hardware malfunction
  9199.  84h    undefined function requested
  9200. --------m-675D-------------------------------
  9201. INT 67 - LIM EMS 4.0 - ENABLE/DISABLE OS FUNCTION SET FUNCTIONS
  9202.     AH = 5Dh
  9203.     AL = subfunction
  9204.         00h enable OS Function Set
  9205.         01h disable OS Function Set
  9206.         02h return access key (resets memory manager, returns access key at
  9207.         next invocation)
  9208.     BX,CX = access key returned by first invocation
  9209. Return: BX,CX = access key, returned only on first invocation of function
  9210.     AH = status (see also AH=5Ch)
  9211.         8Fh undefined subfunction
  9212.         A4h operating system denied access
  9213. --------m-675D03-----------------------------
  9214. INT 67 u - Nanosoft MD386 - INTERNAL INITIALIZATION
  9215.     AX = 5D03h
  9216.     ???
  9217. Return: ???
  9218. Program: MD386 is a subset EMS memory manager by Nanosoft specifically designed
  9219.       for use with the MultiDOS Plus multitasker
  9220. SeeAlso: AX=5D04h,AX=5E00h
  9221. --------m-675D04-----------------------------
  9222. INT 67 - Nanosoft MD386 - GET ALTERNATE MAP STRUCTURE
  9223.     AX = 5D04h
  9224.     BX = alternate register set number
  9225.     ES:DI -> 1024-byte buffer for map structure
  9226. Return: AH = status (see AH=40h)
  9227.     buffer filled if AH=00h
  9228. Note:    used for debugging purposes
  9229. SeeAlso: AX=5D05h
  9230. --------m-675D05-----------------------------
  9231. INT 67 - Nanosoft MD386 - GET INTERNAL HANDLE TABLE
  9232.     AX = 5D05h
  9233.     BX = handle number
  9234.     ES:DI -> 1024-byte buffer for handle table
  9235. Return: AH = status (see AH=40h)
  9236.     buffer filled if AH=00h
  9237. Note:    used for debugging purposes
  9238. SeeAlso: AX=5D04h
  9239. --------m-675DE0-----------------------------
  9240. INT 67 - RM386 - DISABLE RM386
  9241.     AX = 5DE0h
  9242. Note:    RM386 traps this functions on the initial transition to protected
  9243.       mode caused by the INT instruction, which means it can not be
  9244.       overridden simply by hooking the interrupt
  9245. SeeAlso: AX=5DE1h
  9246. --------m-675DE1-----------------------------
  9247. INT 67 - RM386 - ENABLE RM386
  9248.     AX = 5DE1h
  9249. Note:    RM386 traps this functions on the initial transition to protected
  9250.       mode caused by the INT instruction, which means it can not be
  9251.       overridden simply by hooking the interrupt
  9252. SeeAlso: AX=5DE0h
  9253. --------m-675DE2-----------------------------
  9254. INT 67 - RM386 - GET PAGE TABLE
  9255.     AX = 5DE2h
  9256.     ES:DI -> 1088-byte buffer for page table
  9257. Return: ES:DI buffer filled
  9258. Note:    RM386 traps this functions on the initial transition to protected
  9259.       mode caused by the INT instruction, which means it can not be
  9260.       overridden simply by hooking the interrupt
  9261. SeeAlso: AX=5DE3h
  9262. --------m-675DE3-----------------------------
  9263. INT 67 - RM386 - SET PAGE TABLE
  9264.     AX = 5DE3h
  9265.     ES:DI -> 1088-byte buffer containing page table
  9266. Notes:    only the access bits of the page table are used, the remainder is
  9267.       ignored
  9268.     RM386 traps this functions on the initial transition to protected
  9269.       mode caused by the INT instruction, which means it can not be
  9270.       overridden simply by hooking the interrupt
  9271. SeeAlso: AX=5DE2h
  9272. --------m-675DE4-----------------------------
  9273. INT 67 - RM386 - SET WRITE-PROTECTION FOR PAGE IN FIRST MEGABYTE
  9274.     AX = 5DE4h
  9275.     BL = page number
  9276.     BH = access (00h read-only, 01h read-write)
  9277. Note:    RM386 traps this functions on the initial transition to protected
  9278.       mode caused by the INT instruction, which means it can not be
  9279.       overridden simply by hooking the interrupt
  9280. --------m-675DE5-----------------------------
  9281. INT 67 - RM386 - MAP PHYSICAL PAGE TO PHYSICAL SEGMENT
  9282.     AX = 5DE5h
  9283.     EBX = physical page number
  9284.     DX = page number in first megabyte to be remapped (linear-addr SHR 12)
  9285. Return: AH = status
  9286.         00h successful
  9287.         8Bh invalid destination page (not in first megabyte)
  9288. Note:    RM386 traps this functions on the initial transition to protected
  9289.       mode caused by the INT instruction, which means it can not be
  9290.       overridden simply by hooking the interrupt
  9291. SeeAlso: AX=5DE6h
  9292. --------m-675DE6-----------------------------
  9293. INT 67 - RM386 - MAP LOGICAL 4K PAGE TO PHYSICAL SEGMENT
  9294.     AX = 5DE6h
  9295.     BX = logical page number in 4K pages from beginning of memory for EMS
  9296.         handle
  9297.     CX = segment in first megabyte to be remapped
  9298.     DX = previously-allocated EMS handle
  9299. Return: AH = status
  9300.         00h successful
  9301.         83h invalid handle
  9302.         8Ah invalid logical page (out of handle's range)
  9303.         8Bh invalid destination page (not in first megabyte)
  9304. Note:    RM386 traps this functions on the initial transition to protected
  9305.       mode caused by the INT instruction, which means it can not be
  9306.       overridden simply by hooking the interrupt
  9307. SeeAlso: AX=5DE5h
  9308. --------m-675DE7-----------------------------
  9309. INT 67 - RM386 - SET PAGE TABLE BITS FOR RANGE OF PAGES
  9310.     AX = 5DE7h
  9311.     BL = page table bits to be set (bits 2-0 = U/S, R/W, P)
  9312.     CX = number of pages to set
  9313.     DX = first page number to set (in first megabyte)
  9314. Return: AH = status
  9315.         00h successful
  9316.         8Bh invalid destination page (not in first megabyte)
  9317.         A5h invalid page bits
  9318.         A6h invalid page count (overflows first megabyte)
  9319. Note:    RM386 traps this functions on the initial transition to protected
  9320.       mode caused by the INT instruction, which means it can not be
  9321.       overridden simply by hooking the interrupt
  9322. --------m-675DE8-----------------------------
  9323. INT 67 - RM386 - GET PARTIAL PAGE TABLE
  9324.     AX = 5DE8h
  9325.     BX = starting page number in first megabyte+HMA (0000h-010Fh)
  9326.     CX = number of page table entries to get
  9327.     ES:DI -> buffer for DWORD page table entries
  9328. Return: AH = status (00h successful, 8Bh invalid page)
  9329. Note:    RM386 traps this functions on the initial transition to protected
  9330.       mode caused by the INT instruction, which means it can not be
  9331.       overridden simply by hooking the interrupt
  9332. SeeAlso: AX=5DE9h
  9333. --------m-675DE9-----------------------------
  9334. INT 67 - RM386 - SET PARTIAL PAGE TABLE
  9335.     AX = 5DE9h
  9336.     BX = starting page number in first megabyte+HMA (0000h-010Fh)
  9337.     CX = number of page table entries to get
  9338.     DS:SI -> buffer of DWORD page table entries
  9339. Return: AH = status (00h successful, 8Bh invalid destination page)
  9340. Note:    RM386 traps this functions on the initial transition to protected
  9341.       mode caused by the INT instruction, which means it can not be
  9342.       overridden simply by hooking the interrupt
  9343. SeeAlso: AX=5DE8h
  9344. --------m-675DEA-----------------------------
  9345. INT 67 - RM386 - V86-MODE I/O PORT TRAPPING CONTROL
  9346.     AX = 5DEAh
  9347.     BX = function
  9348.         00h globally disable V86-mode trapping
  9349.         01h globally enable V86-mode trapping
  9350.         CL = interrupt to use for trapping
  9351.         02h get I/O trapping state
  9352. Return: AH = status
  9353.         00h successful
  9354.         BX = current trapping state (function 02h)
  9355.             0000h disabled, 0001h enabled
  9356.         CX = interrupt used as trap interrupt (functions 00h and 02h)
  9357. Notes:    RM386 traps this functions on the initial transition to protected
  9358.       mode caused by the INT instruction, which means it can not be
  9359.       overridden simply by hooking the interrupt
  9360.     when I/O trapping is enabled and I/O port access occurs, RM386
  9361.       simulates an INT instruction for the specified interrupt; the
  9362.       interrupt handler is responsible for decoding the trapped instruction
  9363.       and performing the appropriate action.  INT 2C/AX=002Dh provides a
  9364.       similar but more-easily used interface.
  9365. SeeAlso: AX=5DEBh,AH=EFh"RM386",INT 2C/AX=002Dh
  9366. --------m-675DEB-----------------------------
  9367. INT 67 - RM386 - V86-MODE I/O TRAPPING PORT CONTROL
  9368.     AX = 5DEBh
  9369.     BX = function
  9370.         00h disable V86-mode trapping for specified port
  9371.         01h enable V86-mode trapping for specified port
  9372.         02h get V86-mode trapping state for specified port
  9373.     DX = port for which to enable/disable/query trapping
  9374. Return: AH = status
  9375.         00h successful
  9376.         BX = current trapping state (00h off, 01h on) (function 02)
  9377.         A7h invalid port ID
  9378.         A8h reserved port--cannot trap/untrap (DMA/INT/KBD controllers)
  9379. Notes:    RM386 traps this functions on the initial transition to protected
  9380.       mode caused by the INT instruction, which means it can not be
  9381.       overridden simply by hooking the interrupt
  9382. SeeAlso: AX=5DEAh
  9383. --------m-675DFD-----------------------------
  9384. INT 67 U - RM386 v6.00 - ???
  9385.     AX = 5DFDh
  9386.     ???
  9387. Return: ???
  9388. Note:    RM386 traps this function on the initial transition to protected
  9389.       mode caused by the INT instruction, which means it can not be
  9390.       overridden simply by hooking the interrupt
  9391. SeeAlso: AX=5DFEh
  9392. --------m-675DFE-----------------------------
  9393. INT 67 U - RM386 v6.00 - ???
  9394.     AX = 5DFEh
  9395.     ???
  9396. Return: ???
  9397. Note:    RM386 traps this function on the initial transition to protected
  9398.       mode caused by the INT instruction, which means it can not be
  9399.       overridden simply by hooking the interrupt
  9400. SeeAlso: AX=5DFDh
  9401. --------m-675DFF-----------------------------
  9402. INT 67 U - RM386 v6.00 - ???
  9403.     AX = 5DFFh
  9404.     ???
  9405. Return: ???
  9406. Note:    RM386 traps this function on the initial transition to protected
  9407.       mode caused by the INT instruction, which means it can not be
  9408.       overridden simply by hooking the interrupt
  9409. SeeAlso: AX=5DFDh,AX=5DFEh
  9410. --------m-675E00-----------------------------
  9411. INT 67 - Nanosoft MD386 - SET HARDWARE BREAKPOINT
  9412.     AX = 5E00h
  9413.     DH = breakpoint number (0-3)
  9414.     DL = breakpoint attributes (used to set DR7)
  9415.     CX:BX = linear address of breakpoint
  9416. SeeAlso: AX=5D03h,AX=5E01h
  9417. --------m-675E01-----------------------------
  9418. INT 67 - Nanosoft MD386 - GET HARDWARE DEBUG REGISTER
  9419.     AX = 5E01h
  9420.     BL = register number (0-3,7)
  9421. Return: CX:BX = value of specified DRx register
  9422. SeeAlso: AX=5E00h
  9423. --------m-675E02-----------------------------
  9424. INT 67 - Nanosoft MD386 - SET DEBUG EXCEPTION HANDLER
  9425.     AX = 5E02h
  9426.     CX:BX -> exception handler
  9427. Note:    the specified exception handler is called with a simulated interrupt
  9428.       whenever a debug exception occurs which was caused by a hardware
  9429.       breakpoint set with the debug registers
  9430. SeeAlso: AX=5E04h,AX=5E05h
  9431. --------m-675E03-----------------------------
  9432. INT 67 - Nanosoft MD386 - ENABLE/DISABLE MEMORY WRITE PROTECTION
  9433.     AX = 5E03h
  9434.     BL = register map set number
  9435.     BH = new state (00h read-only, else read-write)
  9436.     CX = linear page number (linear address SHR 12)
  9437. Note:    setting write protection in map set 0 will cause the setting to become
  9438.       the default for newly-allocated map sets
  9439. --------m-675E04-----------------------------
  9440. INT 67 - Nanosoft MD386 - GET DEBUG EXCEPTION
  9441.     AX = 5E04h
  9442. Return: BL = debug exception (low byte of DR6 register)
  9443. SeeAlso: AX=5E02h,AX=5E05h
  9444. --------m-675E05-----------------------------
  9445. INT 67 - Nanosoft MD386 - IGNORE NEXT DEBUG EXCEPTION
  9446.     AX = 5E05h
  9447. Note:    may be required when using AX=5E02h for handling instruction
  9448.       breakpoints
  9449. SeeAlso: AX=5E02h,AX=5E04h
  9450. --------m-6760-------------------------------
  9451. INT 67 - EEMS - GET PHYSICAL WINDOW ARRAY
  9452.     AH = 60h
  9453.     ES:DI -> buffer
  9454. Return: AH = status (see also AH=40h)
  9455.     AL = number of entries
  9456.     buffer at ES:DI filled
  9457. --------m-6761-------------------------------
  9458. INT 67 - EEMS - GENERIC ACCELERATOR CARD SUPPORT
  9459.     AH = 61h
  9460.     ???
  9461. Return: ???
  9462. Note:    can be used by accelerator card manufacturer to flush RAM cache,
  9463.       ensuring that the cache accurately reflects what the processor would
  9464.       see without the cache.
  9465. --------m-6768-------------------------------
  9466. INT 67 - EEMS - GET ADDRESSES OF ALL PAGE FRAMES IN SYSTEM
  9467.     AH = 68h
  9468.     ES:DI -> buffer
  9469. Return: AH = status (see also AH=40h)
  9470.     AL = number of entries
  9471.     buffer at ES:DI filled
  9472. Note:    equivalent to LIM 4.0 function 58h
  9473. --------m-6769-------------------------------
  9474. INT 67 - EEMS - MAP PAGE INTO FRAME
  9475.     AH = 69h
  9476.     AL = frame number
  9477.     BX = page number
  9478.     DX = handle
  9479. Return: AH = status (see also AH=40h)
  9480. Note:    similar to EMS function 44h
  9481. SeeAlso: AH=44h,AH=50h,AH=6Ah
  9482. --------m-676A-------------------------------
  9483. INT 67 - EEMS - PAGE MAPPING
  9484.     AH = 6Ah
  9485.     AL = subfunction
  9486.         00h save partial page map
  9487.         CH = first page frame
  9488.         CL = number of frames
  9489.         ES:DI -> buffer which is to be filled
  9490.         01h restore partial page map
  9491.         CH = first page frame
  9492.         CL = number of frames
  9493.         DI:SI -> previously saved page map
  9494.         02h save and restore partial page map
  9495.         CH = first page frame
  9496.         CL = number of frames
  9497.         ES:DI = buffer for current page map
  9498.         DI:SI = new page map
  9499.         03h get size of save array
  9500.         CH = first page frame
  9501.         CL = number of frames
  9502.         Return: AL = size of array in bytes
  9503.         04h switch to standard map register setting
  9504.         05h switch to alternate map register setting
  9505.         06h deallocate pages mapped to frames in conventional memory
  9506.         CH = first page frame
  9507.         CL = number of frames
  9508. Return: AH = status (see also AH=40h)
  9509. Note:    similar to EMS function 4Eh, except that a subrange of pages can be
  9510.       specified
  9511. SeeAlso: AH=69h
  9512. --------m-676B-------------------------------
  9513. INT 67 - DESQview 2.42-2.53 - BUG
  9514.     AH = 6Bh
  9515. Note:    the EMM.DVR portion of DESQview branches to a random location on this
  9516.       function due to a fencepost error
  9517. --------m-67DD-------------------------------
  9518. INT 67 - Quadtel QMAPS - API
  9519.     AH = DDh
  9520.     AL = function
  9521.     ???
  9522. Return: ???
  9523. Notes:    details are not yet available
  9524.     Hewlett-Packard's HPMM.SYS is a licensed version of QMAPS, and thus
  9525.       supports this API
  9526. SeeAlso: AH=3Fh,AX=FFA5h
  9527. --------E-67DE00-----------------------------
  9528. INT 67 - Virtual Control Program Interface - INSTALLATION CHECK
  9529.     AX = DE00h
  9530. Return: AH = 00h    VCPI is present
  9531.         BH = major version number
  9532.         BL = minor version number
  9533.     AH nonzero  VCPI not present
  9534. BUG:    MS Windows 3.00 is reported to "object violently" to this call.
  9535. SeeAlso: INT 2F/AX=1687h
  9536. --------E-67DE01-----------------------------
  9537. INT 67 - Virtual Control Program Interface - GET PROTECTED MODE INTERFACE
  9538.     AX = DE01h
  9539.     ES:DI -> 4K page table buffer
  9540.     DS:SI -> three descriptor table entries in GDT
  9541.         first becomes code segment descriptor, other two for use by
  9542.         main control program
  9543. Return: AH = 00h successful
  9544.         DI -> first unused page table entry in buffer
  9545.         EBX -> protected mode entry point in code segment
  9546.     AH = nonzero  failed
  9547. Note:    protected mode entry point may be called with AX=DE00h-DE05h and
  9548.       AX=DE0Ch (in each case, all other registers as appropriate for
  9549.       the function)
  9550. SeeAlso: INT 2F/AX=1687h,INT 67/AH=3Fh
  9551.  
  9552. QEMM v6.03 protected mode entry point may also be called with:
  9553.     AX = DF00h ???
  9554.         ???
  9555.         Return: ???
  9556.     AX = DF01h ???
  9557.         ???
  9558.         Return: ???
  9559. --------E-67DE02-----------------------------
  9560. INT 67 - Virtual Control Program Interface - GET MAX PHYSICAL MEMORY ADDRESS
  9561.     AX = DE02h
  9562. Return: AH = 00h  successful
  9563.         EDX = physical address of highest 4K memory page
  9564.     AH nonzero: failed
  9565. SeeAlso: AH=3Fh
  9566. --------E-67DE03-----------------------------
  9567. INT 67 - Virtual Control Program Interface - GET NUMBER OF FREE 4K PAGES
  9568.     AX = DE03h
  9569. Return: AH = 00h  successful
  9570.         EDX = number of free 4K pages
  9571.     AH nonzero: failed
  9572. Notes:    returns total number of pages available to ALL tasks in system
  9573.     also available in protected mode by calling the protected-mode VCPI
  9574.       entry point
  9575. SeeAlso: AX=DE04h
  9576. --------E-67DE04-----------------------------
  9577. INT 67 - Virtual Control Program Interface - ALLOCATE A 4K PAGE
  9578.     AX = DE04h
  9579. Return: AH = 00h successful
  9580.         EDX = physical address of allocated page
  9581.     AH nonzero: failed
  9582. Notes:    the client program is responsible for freeing all memory allocated
  9583.       with this call before terminating
  9584.     also available in protected mode by calling the protected-mode VCPI
  9585.       entry point
  9586. SeeAlso: AH=3Fh,AX=DE03h,AX=DE05h
  9587. --------E-67DE05-----------------------------
  9588. INT 67 - Virtual Control Program Interface - FREE 4K PAGE
  9589.     AX = DE05h
  9590.     EDX = physical address of 4K page
  9591. Return: AH = 00h successful
  9592.     AH nonzero: failed
  9593. Note:    also available in protected mode by calling the protected-mode VCPI
  9594.       entry point
  9595. SeeAlso: AH=3Fh,AX=DE04h
  9596. --------E-67DE06-----------------------------
  9597. INT 67 - Virtual Control Program Interface - GET PHYS ADDR OF PAGE IN FIRST MB
  9598.     AX = DE06h
  9599.     CX = page number (linear address shifted right 12 bits)
  9600. Return: AH = 00h successful
  9601.         EDX = physical address of page
  9602.     AH nonzero: invalid page number (AH = 8Bh recommended)
  9603. SeeAlso: AX=5BE0h
  9604. --------E-67DE07-----------------------------
  9605. INT 67 - Virtual Control Program Interface - READ CR0
  9606.     AX = DE07h
  9607. Return: AH = 00h
  9608.     EBX = value of Control Register 0
  9609. SeeAlso: AH=3Fh,AX=DE07h
  9610. --------E-67DE08-----------------------------
  9611. INT 67 - Virtual Control Program Interface - READ DEBUG REGISTERS
  9612.     AX = DE08h
  9613.     ES:DI -> array of 8 DWORDs
  9614. Return: AH = 00h
  9615.     buffer filled with DR0 first, DR7 last, DR4 and DR5 unused
  9616. SeeAlso: AH=3Fh,AX=DE09h
  9617. --------E-67DE09-----------------------------
  9618. INT 67 - Virtual Control Program Interface - SET DEBUG REGISTERS
  9619.     AX = DE09h
  9620.     ES:DI -> array of 8 DWORDs holding new values of debug registers
  9621. Return: AH = 00h
  9622. Note:    values for DR4 and DR5 ignored
  9623. SeeAlso: AH=3Fh,AX=DE08h
  9624. --------E-67DE0A-----------------------------
  9625. INT 67 - Virtual Control Program Interface - GET 8259 INTERRUPT VECTOR MAPPINGS
  9626.     AX = DE0Ah
  9627. Return: AH = 00h successful
  9628.         BX = first vector used by master 8259 (IRQ0)
  9629.         CX = first vector used by slave 8259 (IRQ8)
  9630.     AH nonzero: failed
  9631. Note:    CX is undefined in systems without a slave 8259
  9632. SeeAlso: AX=DE0Bh,INT 21/AX=250Ch,INT 31/AX=0400h
  9633. --------E-67DE0B-----------------------------
  9634. INT 67 - Virtual Control Program Interface - SET 8259 INTERRUPT VECTOR MAPPINGS
  9635.     AX = DE0Bh
  9636.     BX = first vector used by master 8259
  9637.     CX = first vector used by slave 8259
  9638.     interrupts disabled
  9639. Return: AH = 00h successful
  9640.     AH nonzero: failed
  9641. Notes:    This call merely informs the server that the client has changed the
  9642.       interrupt mappings.  The client may not change the mappings if they
  9643.       have already been changed by the server or another client, and is
  9644.       responsible for restoring the original mappings before terminating.
  9645. SeeAlso: AX=DE0Ah,INT 2C/AX=002Ah
  9646. --------E-67DE0C-----------------------------
  9647. INT 67 - Virtual Control Program Interface - SWITCH TO PROTECTED MODE
  9648.     AX = DE0Ch
  9649.     ESI = linear address in first megabyte of values for system registers
  9650.     interrupts disabled
  9651. Return: interrupts disabled
  9652.     GDTR, IDTR, LDTR, TR loaded
  9653.     SS:ESP must have at least 16 bytes space, and the entry point is
  9654.         required to set up a new stack before enabling interrupts
  9655.     EAX, ESI, DS, ES, FS, GS destroyed
  9656. SeeAlso: AH=3Fh,INT 15/AH=89h,INT 38/AH=10h
  9657.  
  9658. Note:    in protected mode, calling the protected-mode VCPI entry point with
  9659.       AX = DE0Ch
  9660.       DS = segment selector mapping entire linear address space obtained
  9661.         via AX=DE01h
  9662.       SS:ESP in first megabyte of linear memory
  9663.       STACK:QWORD  return address from FAR call to 32-bit segment
  9664.         DWORD  EIP
  9665.         DWORD  CS
  9666.         DWORD  reserved for EFLAGS
  9667.         DWORD  ESP
  9668.         DWORD  SS
  9669.         DWORD  ES
  9670.         DWORD  DS
  9671.         DWORD  FS
  9672.         DWORD  GS
  9673.       and interrupts disabled, will switch to virtual86 mode with
  9674.       interrupts disabled, all segment registers loaded, and EAX destroyed.
  9675.  
  9676. Format of system register values for switch to protected mode:
  9677. Offset    Size    Description
  9678.  00h    DWORD    value for CR3
  9679.  04h    DWORD    linear address in first megabyte of value for GDTR
  9680.  08h    DWORD    linear address in first megabyte of value for IDTR
  9681.  0Ch    WORD    value for LDTR
  9682.  0Eh    WORD    value for TR
  9683.  10h    PWORD    CS:EIP of protected mode entry-point
  9684. --------m-67DE0F-----------------------------
  9685. INT 67 - Netroom3 - ???
  9686.     AX = DE0Fh
  9687.     ???
  9688. Return: ???
  9689. Note:    called by Netroom's DPMI.EXE
  9690. --------m-67EF-------------------------------
  9691. INT 67 - RM386 v6.00+ - EXECUTE XMS FUNCTION
  9692.     AH = EFh
  9693.     AL = function (00h-12h,80h-8Fh)
  9694.     other register as appropriate for XMS function
  9695. Return: varies by function (see INT 2F/AX=4310h)
  9696. Note:    these functions appear to be equivalent to the XMS functions with the
  9697.       same numbers
  9698. SeeAlso: AH=5Dh"RM386",INT 2F/AX=4310h
  9699. --------m-67FFA5-----------------------------
  9700. INT 67 - Microsoft EMM386.EXE v4.20+ - INSTALLATION CHECK
  9701.     AX = FFA5h
  9702. Return: AX = 845Ah if loaded
  9703.         BX:CX -> API entry point
  9704. Notes:    this call is available even if EMM386 is not providing EMS
  9705.     if no other program has hooked INT 67, an alternate installation
  9706.       check is to test for the string
  9707.       "MICROSOFT EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  9708.       handler's segment; the word immediately preceding this string
  9709.       contains the offset of the API entry point
  9710. SeeAlso: AH=3Fh,AX=FFA5h/BX=4345h,INT 21/AX=4402h"EMM386.EXE"
  9711.  
  9712. Call API entry point with:
  9713.     AH = 00h get memory manager's status
  9714.         Return: AH = status
  9715.             bit 0: not active (OFF)
  9716.             bit 1: in "Auto" mode
  9717.     AH = 01h set memory manager's state
  9718.         AL = new state (00h ON, 01h OFF, 02h AUTO)
  9719.     AH = 02h Weitek coprocessor support
  9720.         AL = subfunction
  9721.         00h get Weitek support state
  9722.             Return: AL = status
  9723.                 bit 0: Weitek coprocessor is present
  9724.                 bit 1: Weitek support is enabled
  9725.         01h turn on Weitek support
  9726.         02h turn off Weitek support
  9727.      --- v4.20-4.41 only ---
  9728.     AH = 03h Windows support???
  9729.         AL = subfunction (00h, 01h)
  9730.     AH = 04h print copyright notice to standard output
  9731.          (using INT 21/AH=09h)
  9732.     AH = 05h print available report
  9733.          (the one shown when running EMM386 from the DOS prompt)
  9734. ----------67FFA5BX4345-----------------------
  9735. INT 67 U - Compaq CEMM v5.10+ - PRIVATE API
  9736.     AX = FFA5h
  9737.     BX = 4345h ("CE")
  9738.     DX = subfunction
  9739.         0000h unshadow video ROM???
  9740.         0001h shadow video ROM???
  9741.         0002h map pages
  9742.         CX = number of pages (00h=one)
  9743.         ESI = linear address of first page to map into address space
  9744.         EDI = linear starting address at which pages are to be visible
  9745.         0003h get ???
  9746.         Return: DX = ??? (0-2)
  9747.         0004h BUG: crashes system due to fencepost error
  9748. Return: AH = 84h
  9749.     AL = status (84h = error, FFh = success)
  9750. Note:    if BX <> 4345h or DX > 0004h on entry, CEMM behaves identically to
  9751.       Microsoft's EMM386 (see AX=FFA5h"EMM386")
  9752. SeeAlso: AX=FFA5h"EMM386"
  9753. --------!------------------------------------
  9754.